code: def run_conv_valid(
      self,
      inputs_shape,
      filters_shape,
      border_mode="valid",
      filter_dilation=(1, 1),
      subsample=(1, 1),
      unshared=False,
      verify_grad=False,
  ):
      inputs_shape = [inputs_shape[i] for i in (0, 3, 1, 2)]
      if unshared:
          filters_shape = [filters_shape[i] for i in (0, 1, 2, 5, 3, 4)]
      else:
          filters_shape = [filters_shape[i] for i in (0, 3, 1, 2)]
  
      inputs_val = np.random.random(inputs_shape).astype(config.floatX)
      filters_val = np.random.random(filters_shape).astype(
          config.floatX
      )
  
      inputs = gpuarray_shared_constructor(inputs_val)
      filters = gpuarray_shared_constructor(filters_val)
  
      conv_ref = CorrMM(
          border_mode=border_mode,
          filter_dilation=filter_dilation,
          subsample=subsample,
          unshared=unshared,
      )(ref_cast(inputs), ref_cast(filters))
      f_ref = theano.function([], conv_ref, mode=mode_without_gpu)
  
      conv = GpuCorrMM(
          border_mode=border_mode,
          filter_dilation=filter_dilation,
          subsample=subsample,
          unshared=unshared,
      )(inputs, filters)
      f = theano.function([], conv, mode=mode_with_gpu)
  
      res_ref = f_ref()
      res = f()
      utt.assert_allclose(res_ref, res)
  
      if verify_grad:
          utt.verify_grad(
              GpuCorrMM(
                  border_mode=border_mode,
                  filter_dilation=filter_dilation,
                  subsample=subsample,
                  unshared=unshared,
              ),
              [inputs_val, filters_val],
              mode=mode_with_gpu,
          )
  
imports: from __future__ import absolute_import, print_function, division
  import unittest
  import numpy
  import theano
  from theano import config
  from theano.tests import unittest_tools
  from theano.tensor.nnet.corr import CorrMM, CorrMM_gradWeights, CorrMM_gradInputs
  from ..type import gpuarray_shared_constructor
  from ..blas import GpuCorrMM, GpuCorrMM_gradWeights, GpuCorrMM_gradInputs
  from .config import mode_with_gpu, mode_without_gpu, ref_cast
  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 1 for calling the TestCorrMM obj's underlying member method code with example usage: obj.run_conv_valid(inputs_shape, filters_shape, border_mode, filter_dilation, subsample, unshared, verify_grad) without return types