code: def test_unspecified_shape_match(self):
      h, w = 12, 18
      input = tf.placeholder(shape=(1, h, None, 3), dtype=tf.float32)
      for padding in ["same", "valid"]:
          for stride in [1, 2]:
              output = Conv2DTranspose(
                  "deconv_s{}_pad{}".format(stride, padding),
                  input,
                  20,
                  3,
                  strides=stride,
                  padding=padding,
              )
  
              static_shape = tuple(output.shape.as_list())
              dynamic_shape = self.eval(
                  output, feed_dict={input: np.random.rand(1, h, w, 3)}
              ).shape
              self.assertTrue(static_shape[2] is None)
              self.assertTrue(static_shape[:2] == dynamic_shape[:2])
              self.assertTrue(static_shape[3] == dynamic_shape[3])
  
file_path: tensorpack/tensorpack/models/models_test.py
imports: import logging
  import unittest
  import numpy
  from ..compat import tfv1
  from .conv2d import Conv2DTranspose
  from .pool import FixedUnPooling
label_desc: Use image node_id 3 for calling the TestConv2DTranspose obj's underlying member method code with example usage: obj.test_unspecified_shape_match() without return types