code: def test_dot_infershape(self):
      b = tensor.fmatrix()
      W = tensor.ftensor4()
      h = tensor.ftensor3()
      iIdx = tensor.imatrix()
      oIdx = tensor.imatrix()
  
      self._compile_and_check(
          [W, h, iIdx, b, oIdx],
          [sparse_block_dot(W, h, iIdx, b, oIdx)],
          self.gemv_data(),
          self.gemv_class,
      )
  
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 15 for calling the BlockSparse_Gemv_and_Outer obj's underlying member method code with example usage: obj.test_dot_infershape() without return types