class_docstr: Gradient wrt. inputs for `Corr3dMM`.
  
  Notes
  -----
  You will not want to use this directly, but rely on
  Theano's automatic differentiation or graph optimization to
  use it as needed.
class_docstr_tok: ["Gradient","wrt",".","inputs","for","`","Corr3dMM","`",".","Notes","--","--","-","You","will","not","want","to","use","this","directly",",","but","rely","on","Theano","'s","automatic","differentiation","or","graph","optimization","to","use","it","as","needed","."]
code: def grad(self, inp, grads):
      weights, top = inp[:2]
      (bottom,) = grads
      d_weights = Corr3dMM_gradWeights(
          self.border_mode,
          self.subsample,
          self.filter_dilation,
          num_groups=self.num_groups,
      )(bottom, top, weights.shape[-3:])
      d_top = Corr3dMM(
          self.border_mode,
          self.subsample,
          self.filter_dilation,
          num_groups=self.num_groups,
      )(bottom, weights)
      d_height_width_depth = (
          (theano.gradient.DisconnectedType()(),) * 3
          if len(inp) == 5
          else ()
      )
      return (d_weights, d_top) + d_height_width_depth
  
imports: from __future__ import absolute_import, print_function, division
  import os
  import logging
  from six import integer_types
  import theano
  from theano import Apply
  from theano import gof
  from theano.gof import ParamsType, EnumList
  from theano.scalar import int64
  from theano.tensor import as_tensor_variable, TensorType
  from theano.tensor.nnet.abstract_conv import get_conv_output_shape
  from theano.tensor import blas_headers
  from theano.tensor.blas import ldflags, blas_header_version
label_desc: Use image node_id 4 for calling the Corr3dMM_gradInputs obj's underlying member method code with example usage: obj.grad(inp, grads) and returns: unknown