class_docstr: Build indices for a sparse CSC matrix that could implement A
  (convolve) B.
  
     This generates a sparse matrix M, which generates a stack of
     image patches when computing the dot product of M with image
     patch. Convolution is then simply the dot product of (img x M)
     and the kernels.
class_docstr_tok: ["Build","indices","for","a","sparse","CSC","matrix","that","could","implement","A","(","convolve",")","B",".","This","generates","a","sparse","matrix","M",",","which","generates","a","stack","of","image","patches","when","computing","the","dot","product","of","M","with","image","patch",".","Convolution","is","then","simply","the","dot","product","of","(","img","x","M",")","and","the","kernels","."]
code: def perform(self, node, inputs, outputs):
      (inshp, kshp) = inputs
      (out_indices, out_indptr, spmat_shape) = outputs
      indices, indptr, spmatshp, outshp = self.evaluate(inshp, kshp)
      out_indices[0] = indices
      out_indptr[0] = indptr
      spmat_shape[0] = np.asarray(spmatshp)
  
file_path: Theano/theano/sparse/sandbox/sp.py
imports: from __future__ import absolute_import, print_function, division
  import numpy
  import scipy
  from scipy import sparse
  from six.moves import xrange
  import theano
  import theano.sparse
  from theano import sparse, gof, Op, tensor
  from theano.sparse.basic import Remove0, remove0
  from theano.sparse import SpSum, sp_sum, ColScaleCSC, RowScaleCSC, col_scale, row_scale, Diag, diag, SquareDiagonal, square_diagonal, EnsureSortedIndices, ensure_sorted_indices, clean
label_desc: Use image node_id 3 for calling the ConvolutionIndices obj's underlying member method code with example usage: obj.perform(node, inputs, outputs) without return types