class_docstr: This op computes the dot product of specified pieces of vectors
  and matrices, returning pieces of vectors::
  
      for b in range(batch_size):
          for j in range(o.shape[1]):
              for i in range(h.shape[1]):
                  o[b, j, :] += numpy.dot(h[b, i], W[iIdx[b, i], oIdx[b, j]])
  
  where b, h, W, o iIdx, oIdx are defined in the docstring of make_node.
  
  .. image:: ../../../images/blocksparse.png
      :scale: 50 %
class_docstr_tok: ["This","op","computes","the","dot","product","of","specified","pieces","of","vectors","and","matrices",",","returning","pieces","of","vectors",":",":","for","b","in","range","(","batch_size",")",":","for","j","in","range","(","o.shape","[","1","]",")",":","for","i","in","range","(","h.shape","[","1","]",")",":","o","[","b",",","j",",",":","]","+=","numpy.dot","(","h","[","b",",","i","]",",","W","[","iIdx","[","b",",","i","]",",","oIdx","[","b",",","j","]","]",")","where","b",",","h",",","W",",","o","iIdx",",","oIdx","are","defined","in","the","docstring","of","make_node",".","..","image",":",":","..","\/","..","\/","..","\/images\/blocksparse.png",":","scale",":","50","%"]
code: def __init__(self, inplace=False):
      self.inplace = inplace
      if self.inplace:
          self.destroy_map = {0: [0]}
  
file_path: Theano/theano/tensor/nnet/blocksparse.py
imports: from __future__ import absolute_import, print_function, division
  import numpy
  import theano
  from theano import Op, Apply
  from theano.tensor import discrete_dtypes
  from theano.gradient import grad_undefined
label_desc: Use image node_id 1 to create a new SparseBlockGemv object from inherited base classes: Op with example: obj = SparseBlockGemv(inplace)