code: def testUnknownChannels(self, autograph):
      x = tf.TensorSpec([3, 3, 3, None], dtype=tf.float32)
  
      c = conv.ConvND(
          num_spatial_dims=2,
          output_channels=1,
          kernel_shape=3,
          data_format="NHWC",
      )
      defun_conv = tf.function(c, autograph=autograph)
  
      with self.assertRaisesRegex(
          ValueError, "The number of input channels must be known"
      ):
          defun_conv.get_concrete_function(x)
  
imports: from absl.testing import parameterized
  import numpy
  from sonnet.src import conv
  from sonnet.src import initializers
  from sonnet.src import test_utils
  import tensorflow
label_desc: Use image node_id 9 for calling the ConvTest obj's underlying member method code with example usage: obj.testUnknownChannels(autograph) without return types