code: def test_infer_shape_forward(self):
      if theano.config.mode == "FAST_COMPILE":
          raise SkipTest("CorrMM don't work in FAST_COMPILE")
      if not theano.config.cxx:
          raise SkipTest("Need cxx for this test")
  
      def rand(*shape):
          r = np.asarray(np.random.rand(*shape), dtype="float64")
          return r * 2 - 1
  
      corrMM = corr.CorrMM
  
      adtens = T.dtensor4()
      bdtens = T.dtensor4()
      aivec_vals = [
          [4, 5, 6, 3],
          [6, 2, 8, 3],
          [3, 6, 7, 5],
          [3, 6, 7, 5],
          [5, 2, 4, 3],
      ]
      bivec_vals = [
          [7, 5, 3, 2],
          [4, 2, 5, 3],
          [5, 6, 3, 2],
          [5, 6, 2, 3],
          [6, 2, 4, 3],
      ]
      modes = ["valid", "full", "half", (1, 1), (2, 1), (1, 2), 1]
      subsamples = [(1, 1), (2, 1), (1, 2)]
  
      for aivec_val, bivec_val in zip(aivec_vals, bivec_vals):
          adtens_val = rand(*aivec_val)
          bdtens_val = rand(*bivec_val)
          for mode in modes:
              for subsample in subsamples:
                  # CorrMM
                  cdtens = corrMM(
                      border_mode=mode, subsample=subsample
                  )(adtens, bdtens)
                  self._compile_and_check(
                      [adtens, bdtens],
                      [cdtens],
                      [adtens_val, bdtens_val],
                      corrMM,
                      warn=False,
                  )
  
imports: from __future__ import absolute_import, print_function, division
  from nose.plugins.skip import SkipTest
  from nose.plugins.attrib import attr
  from nose.tools import assert_equals
  import numpy
  from six import integer_types
  import theano
  import theano.tensor
  from theano.tests import unittest_tools
  from theano.tensor.nnet import corr, conv
  from theano.tensor.nnet.tests.test_abstract_conv import Grouped_conv_noOptim, TestUnsharedConv
  from theano.tensor.nnet.tests.test_abstract_conv import TestAsymmetricPadding, TestCausalConv
label_desc: Use image node_id 12 for calling the TestCorr2D obj's underlying member method code with example usage: obj.test_infer_shape_forward() and returns: unknown