code: def test_features_shape_dynamic_multi_none(
      self, dtype, encoding: features_lib.Encoding
  ):
      x = np.random.randint(256, size=(2, 3, 1), dtype=np.uint8)
      x_other_shape = np.random.randint(
          256, size=(4, 4, 1), dtype=np.uint8
      )
      wrong_shape = np.random.randint(
          256, size=(2, 3, 2), dtype=np.uint8
      )
  
      self.assertFeature(
          feature=features_lib.Tensor(
              shape=(None, None, 1),
              dtype=dtype,
              encoding=encoding,
          ),
          shape=(None, None, 1),
          dtype=dtype,
          tests=[
              testing.FeatureExpectationItem(
                  value=x,
                  expected=x,
              ),
              testing.FeatureExpectationItem(
                  value=x_other_shape,
                  expected=x_other_shape,
              ),
              testing.FeatureExpectationItem(
                  value=wrong_shape,  # Wrong shape
                  raise_cls=ValueError,
                  raise_cls_np=ValueError,
                  raise_msg="are incompatible",
              ),
          ],
      )
  
imports: from absl.testing import parameterized
  import jax.numpy
  import numpy
  import pytest
  import tensorflow
  from tensorflow_datasets import testing
  from tensorflow_datasets.core import features
label_desc: Use image node_id 4 for calling the FeatureTensorTest obj's underlying member method code with example usage: obj.test_features_shape_dynamic_multi_none(dtype, encoding) without return types