code: def test_basic(self):
      # Basic functionality of nnet.conv.ConvOp is already tested by
      # its own test suite.  We just have to test whether or not
      # signal.conv.conv2d can support inputs and filters of type
      # matrix or tensor3.
  
      if (
          not theano.tensor.nnet.conv.imported_scipy_signal
          and theano.config.cxx == ""
      ):
          raise SkipTest("conv2d tests need SciPy or a c++ compiler")
  
      self.validate((1, 4, 5), (2, 2, 3), out_dim=4, verify_grad=True)
      self.validate((7, 5), (5, 2, 3), out_dim=3, verify_grad=False)
      self.validate((3, 7, 5), (2, 3), out_dim=3, verify_grad=False)
      self.validate((7, 5), (2, 3), out_dim=2, verify_grad=False)
  
file_path: Theano/theano/tensor/signal/tests/test_conv.py
imports: from __future__ import absolute_import, print_function, division
  import unittest
  from nose.plugins.skip import SkipTest
  import numpy
  import theano
  import theano.tensor
  from theano.tests import unittest_tools
  from theano.tensor.signal import conv
  from theano.tensor.basic import _allclose
label_desc: Use image node_id 3 for calling the TestSignalConv2D obj's underlying member method code with example usage: obj.test_basic() without return types