code: def testNestedGather(self):
      np.random.seed(5)  # Fix seed to avoid flakiness
      with self.cached_session():
          p_shape = (8, 2)
          p_size = 16
          index_values = [1, 3, 5, 6]
          index_values2 = [0, 2]
          y2_shape = [2, 2]
  
          params = constant_op.constant(
              np.arange(p_size).astype(np.float64),
              shape=p_shape,
              name="p",
          )
          indices = constant_op.constant(index_values, name="i")
          y = array_ops.gather(params, indices, name="y")
          indices2 = constant_op.constant(index_values2, name="i2")
          y2 = array_ops.gather(y, indices2, name="y2")
  
          error = gradient_checker.compute_gradient_error(
              params, p_shape, y2, y2_shape
          )
      tf_logging.info("nested gather error = %f", error)
      self.assertLess(error, 1e-4)
  
imports: import numpy
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import gradient_checker
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn_ops
  import tensorflow.python.ops.nn_grad
  from tensorflow.python.platform import test
  from tensorflow.python.platform import tf_logging
label_desc: Use image node_id 5 for calling the GradientCheckerTest obj's underlying member method code with example usage: obj.testNestedGather() without return types