code: def test_sparseblockouter(self):
      o = tensor.ftensor4()
      x = tensor.ftensor3()
      y = tensor.ftensor3()
      xIdx = tensor.imatrix()
      yIdx = tensor.imatrix()
  
      out = self.outer_op(o, x, y, xIdx, yIdx)
  
      f = theano.function(
          [o, x, y, xIdx, yIdx],
          out,
          on_unused_input="warn",
          mode=self.mode,
      )
  
      (
          o_val,
          x_val,
          y_val,
          xIdx_val,
          yIdx_val,
      ) = BlockSparse_Gemv_and_Outer.outer_data()
  
      th_out = f(o_val, x_val, y_val, xIdx_val, yIdx_val)
      ref_out = BlockSparse_Gemv_and_Outer.outer_numpy(
          o_val, x_val, y_val, xIdx_val, yIdx_val
      )
  
      utt.assert_allclose(ref_out, th_out)
  
imports: from __future__ import absolute_import, print_function, division
  import numpy
  from numpy.random import randn
  import theano
  from theano import tensor
  import theano.tests.unittest_tools
  from theano.tensor.nnet.blocksparse import sparse_block_dot, sparse_block_gemv, sparse_block_outer, SparseBlockGemv, SparseBlockOuter
label_desc: Use image node_id 14 for calling the BlockSparse_Gemv_and_Outer obj's underlying member method code with example usage: obj.test_sparseblockouter() without return types