code: def testFlatten_unknownNonBatchSize(self):
      mod = reshape.Flatten()
      f = tf.function(mod)
      inputs = tf.TensorSpec([8, None, None, 3], tf.float32)
      cf = f.get_concrete_function(inputs)
      self.assertEqual(cf.outputs[0].shape.as_list(), [8, None])
      flat = cf(tf.ones([8, 1, 2, 3]))
      self.assertEqual(flat.shape, [8, 1 * 2 * 3])
  
imports: from absl.testing import parameterized
  import numpy
  from sonnet.src import reshape
  from sonnet.src import test_utils
  import tensorflow
label_desc: Use image node_id 3 for calling the FlattenTest obj's underlying member method code with example usage: obj.testFlatten_unknownNonBatchSize() without return types