code: def test_subsample(self):
      # Tests correlation where subsampling != (1,1)
  
      self.validate(
          (3, 2, 7, 5), (5, 2, 2, 3), "valid", subsample=(2, 2)
      )
      self.validate(
          (3, 2, 7, 5), (5, 2, 2, 3), "valid", subsample=(2, 1)
      )
      self.validate(
          (1, 1, 6, 6), (1, 1, 3, 3), "valid", subsample=(3, 3)
      )
  
      self.validate(
          (3, 2, 7, 5), (5, 2, 2, 3), "full", subsample=(2, 2)
      )
      self.validate(
          (3, 2, 7, 5), (5, 2, 2, 3), "full", subsample=(2, 1)
      )
      self.validate(
          (1, 1, 6, 6), (1, 1, 3, 3), "full", subsample=(3, 3)
      )
  
      self.validate(
          (3, 2, 7, 5), (5, 2, 2, 3), "half", subsample=(2, 2)
      )
      self.validate(
          (3, 2, 7, 5), (5, 2, 2, 3), "half", subsample=(2, 1)
      )
      self.validate(
          (1, 1, 6, 6), (1, 1, 3, 3), "half", subsample=(3, 3)
      )
  
      self.validate(
          (3, 2, 7, 5), (5, 2, 2, 3), (1, 1), subsample=(2, 2)
      )
      self.validate(
          (3, 2, 7, 5), (5, 2, 2, 3), (2, 1), subsample=(2, 1)
      )
      self.validate(
          (1, 1, 6, 6), (1, 1, 3, 3), (1, 2), subsample=(3, 3)
      )
  
      self.validate((1, 1, 6, 6), (1, 1, 3, 3), 1, subsample=(3, 3))
  
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 5 for calling the TestCorr2D obj's underlying member method code with example usage: obj.test_subsample() without return types