code: def test_transform_with_custom_gradients(self):
      @custom_gradient.custom_gradient
      def add(x, y):
          e = math_ops.add(x, y, name="x_plus_y")
  
          # custom gradient that returns gradients of x * y instead of x + y
          def grad(upstream):
              dz_dx = y
              dz_dy = x
              return upstream * dz_dx, upstream * dz_dy
  
          return e, grad
  
      @def_function.function
      def f(x, y):
          return add(x, y)
  
      one = constant_op.constant(1.0)
      f = transform.transform_function(
          f, inputs=[one, one], transform_fn=add_to_multiply
      )
      self.assertEqual(f(one, one), 1.0)
  
      @def_function.function
      def f_g(x, y):
          z = f(x, y)
          dz_dx, dz_dy = gradients_impl.gradients(z, [x, y])
          return math_ops.add(dz_dx, dz_dy)
  
      self.assertEqual(
          f_g(constant_op.constant(2.0), constant_op.constant(3.0)), 5.0
      )
  
imports: import collections
  from absl.testing import parameterized
  from tensorflow.core.function.testing import test_pass
  from tensorflow.core.function.transform import transform
  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 tensor_spec
  from tensorflow.python.framework import test_util
  from tensorflow.python.module import module
  from tensorflow.python.ops import custom_gradient
  from tensorflow.python.ops import gradients_impl
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import while_loop
  from tensorflow.python.platform import test
  from tensorflow.python.saved_model import load
  from tensorflow.python.saved_model import save
label_desc: Use image node_id 5 for calling the TransformTest obj's underlying member method code with example usage: obj.test_transform_with_custom_gradients() and returns: e,  grad, add, math_ops, unknown,  unknown