code: def test_sparseblockgemvF(self):
      # Test the fortan order for W (which can happen in the grad for some
      # graphs).
  
      b = tensor.fmatrix()
      W = tensor.ftensor4()
      h = tensor.ftensor3()
      iIdx = tensor.imatrix()
      oIdx = tensor.imatrix()
  
      o = self.gemv_op(
          b.take(oIdx, axis=0),
          tensor.DimShuffle((False, False, False, False), (0, 1, 3, 2))(
              tensor.as_tensor_variable(W)
          ),
          h,
          iIdx,
          oIdx,
      )
  
      f = theano.function([W, h, iIdx, b, oIdx], o, mode=self.mode)
  
      (
          W_val,
          h_val,
          iIdx_val,
          b_val,
          oIdx_val,
      ) = BlockSparse_Gemv_and_Outer.gemv_data()
  
      th_out = f(
          np.swapaxes(W_val, 2, 3), h_val, iIdx_val, b_val, oIdx_val
      )
      ref_out = BlockSparse_Gemv_and_Outer.gemv_numpy(
          b_val.take(oIdx_val, axis=0), W_val, h_val, iIdx_val, oIdx_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 10 for calling the BlockSparse_Gemv_and_Outer obj's underlying member method code with example usage: obj.test_sparseblockgemvF() without return types