code: def test_border_mode(self):
      self.run_conv_valid(
          inputs_shape=(16, 20, 12, 1),
          filters_shape=(10, 6, 12, 1),
          border_mode="valid",
      )
      self.run_conv_valid(
          inputs_shape=(16, 20, 12, 1),
          filters_shape=(10, 6, 12, 1),
          border_mode="half",
      )
      self.run_conv_valid(
          inputs_shape=(16, 20, 12, 1),
          filters_shape=(10, 6, 12, 1),
          border_mode="full",
      )
      self.run_conv_valid(
          inputs_shape=(16, 20, 12, 1),
          filters_shape=(10, 6, 12, 1),
          border_mode=(0, 0),
      )
      self.run_conv_valid(
          inputs_shape=(16, 20, 12, 1),
          filters_shape=(10, 6, 12, 1),
          border_mode=(1, 2),
      )
      self.run_conv_valid(
          inputs_shape=(16, 20, 12, 1),
          filters_shape=(10, 6, 12, 1),
          border_mode=(3, 2),
      )
  
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 3 for calling the TestCorrMM obj's underlying member method code with example usage: obj.test_border_mode() without return types