code: def testIndexedSlicesConcatDim2Grad(self):
      x_shapes = [[20, 7, 3], [20, 7, 1], [20, 7, 2]]
      output_shape = [4, 7, 6]
      x_vals = [
          np.random.random_sample(x_shape).astype(np.float64)
          for x_shape in x_shapes
      ]
      with self.cached_session():
          xs = [constant_op.constant(x_val) for x_val in x_vals]
          x_concat = array_ops.concat(xs, 2)
          output = array_ops.gather(x_concat, [1, 2, 0, 5])
          err = gradient_checker.compute_gradient_error(
              xs, x_shapes, output, output_shape
          )
      self.assertLess(err, 1e-11)
  
imports: import numpy
  from tensorflow.python.eager import def_function
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import errors_impl
  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 gen_array_ops
  from tensorflow.python.ops import gradient_checker
  from tensorflow.python.ops import gradients_impl
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.ops import variables
  from tensorflow.python.platform import test
label_desc: Use image node_id 27 for calling the ConcatOpTest obj's underlying member method code with example usage: obj.testIndexedSlicesConcatDim2Grad() without return types