code: def test_missing_info(self):
      # Test convolutions for various pieces of missing info.
  
      self.validate(
          None,
          None,
          N_image_shape=(3, 2, 8, 8),
          N_filter_shape=(4, 2, 5, 5),
      )
      self.validate(
          (3, 2, None, None),
          None,
          N_image_shape=(3, 2, 8, 8),
          N_filter_shape=(4, 2, 5, 5),
      )
      self.validate(
          (None, 2, None, None),
          (None, 2, 5, 5),
          N_image_shape=(3, 2, 8, 8),
          N_filter_shape=(4, 2, 5, 5),
      )
      self.validate(
          (3, 2, 8, 8),
          (4, 2, None, 5),
          N_image_shape=(3, 2, 8, 8),
          N_filter_shape=(4, 2, 5, 5),
      )
      self.validate(
          (3, 2, 8, 8),
          (4, 2, 5, None),
          N_image_shape=(3, 2, 8, 8),
          N_filter_shape=(4, 2, 5, 5),
      )
  
imports: from __future__ import absolute_import, print_function, division
  import time
  from nose.plugins.skip import SkipTest
  import numpy
  import theano
  import theano.tensor
  from theano.tests import unittest_tools
  from theano.tensor.nnet import conv
  from theano.tensor.basic import _allclose, NotScalarConstantError
  from theano.tests.unittest_tools import attr
label_desc: Use image node_id 20 for calling the TestConv2D obj's underlying member method code with example usage: obj.test_missing_info() without return types