code: def testAdjustSaturation(self, shard_spec):
      np.random.seed(123)
      images = constant_op.constant(
          np.random.normal(0.0, 1.0, 8 * 9 * 9 * 3).reshape(
              [8, 9, 9, 3]
          ),
          dtype=dtypes.float32,
      )
  
      expected_result = gen_image_ops.adjust_saturation(
          images=images, scale=0.5
      )
  
      if shard_spec == "sharded":
          layout = self.batch_layout_4d
      else:
          layout = self.replicated_layout_4d
      images = numpy_util.pack_numpy(images, layout)
  
      got = gen_image_ops.adjust_saturation(images=images, scale=0.5)
  
      self.assertDTensorEqual(expected_result, layout, got)
  
imports: import itertools
  from absl.testing import parameterized
  import numpy
  from tensorflow.dtensor.python import api
  from tensorflow.dtensor.python import layout
  from tensorflow.dtensor.python import numpy_util
  from tensorflow.dtensor.python.tests import test_util
  from tensorflow.dtensor.python.tests import test_util_ops
  from tensorflow.python.eager import backprop
  from tensorflow.python.eager import context
  from tensorflow.python.eager.polymorphic_function import polymorphic_function
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import gen_array_ops
  from tensorflow.python.ops import gen_image_ops
  from tensorflow.python.ops import gen_linalg_ops
  from tensorflow.python.ops import nn_impl
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.platform import test
label_desc: Use image node_id 11 for calling the DTensorBatchParallelSPMDTest obj's underlying member method code with example usage: obj.testAdjustSaturation(shard_spec) without return types