class_docstr: Base class for `Corr3dMM`, `Corr3dMM_gradWeights` and
  `Corr3dMM_gradInputs`. Cannot be used directly.
  
  Every sub-class must define internal attribute ``_direction`` out of __init__().
  ``_direction`` must take one of following values:
  
   - "forward" to correlate bottom with weights and store results in top.
   - "backprop weights" to do a valid convolution of bottom with top
     (swapping the first two dimensions) and store results in weights.
   - "backprop inputs" to do a full convolution of top with weights
     (swapping the first two dimensions) and store results in bottom.
  
  Parameters
  ----------
  border_mode : {'valid', 'full', 'half'}
      Additionally, the padding size could be directly specified by an integer
      or a tuple of three of integers
  subsample
      Perform subsampling of the output (default: (1, 1, 1)).
  filter_dilation
      Perform dilated correlation (default: (1, 1, 1))
  num_groups
      Perform grouped convolutions (default: 1)
code: def __setstate__(self, d):
      self.__dict__.update(d)
      if not hasattr(self, "num_groups"):
          self.num_groups = 1
  
imports: import logging
  import os
  from typing import Optional
  import pytensor
  from pytensor.configdefaults import config
  from pytensor.graph.basic import Apply
  from pytensor.graph.op import _NoPythonOp
  from pytensor.link.c.op import OpenMPOp
  from pytensor.link.c.params_type import ParamsType
  from pytensor.link.c.type import EnumList
  from pytensor.scalar import int64
  from pytensor.tensor import blas_headers
  from pytensor.tensor.basic import as_tensor_variable
  from pytensor.tensor.blas import blas_header_version, ldflags
  from pytensor.tensor.conv.abstract_conv import get_conv_output_shape
  from pytensor.tensor.type import TensorType
label_desc: Use image node_id 5 for calling the BaseCorr3dMM obj's underlying member method code with example usage: obj.__setstate__(d) without return types