code: def testMultipleOutputChainedGradients(self, use_tape):
      with test_util.AbstractGradientTape(use_tape=use_tape) as tape:
          x = constant_op.constant(1.0, dtype=dtypes.float32)
          tape.watch(x)
  
          yexp = math_ops.exp(x)
          yexplog = math_ops.log(yexp)
          grads = tape.gradient([yexp, yexplog], [x])
          grad_vals = self.evaluate(grads)
          exp1_plus_one = (1.0 + np.exp(1.0)).astype(np.float32)
          # [dexp(x)/dx + d(log(exp(x)))/dx] @ x=1 == exp(1) + 1
          self.assertAllClose(grad_vals[0], exp1_plus_one)
  
imports: from absl.testing import parameterized
  import numpy
  from tensorflow.python.eager import context
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import math_ops
  from tensorflow.python.platform import test
label_desc: Use image node_id 1 for calling the GradientCorrectnessTest obj's underlying member method code with example usage: obj.testMultipleOutputChainedGradients(use_tape) without return types