code: def test_normal_cdf_gradients(self):
      dist = normal.Normal(loc=3.0, scale=2.0)
      bij = sfwii.ScalarFunctionWithInferredInverse(dist.cdf)
  
      ys = self.evaluate(
          samplers.uniform([100], seed=test_util.test_seed())
      )
      xs_true, grad_true = gradient.value_and_gradient(
          dist.quantile, ys
      )
      xs_numeric, grad_numeric = gradient.value_and_gradient(
          bij.inverse, ys
      )
      self.assertAllClose(xs_true, xs_numeric, atol=1e-4)
      self.assertAllClose(grad_true, grad_numeric, rtol=1e-4)
  
imports: from absl.testing import parameterized
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import chain
  from tensorflow_probability.python.bijectors import power
  from tensorflow_probability.python.bijectors import scale
  from tensorflow_probability.python.bijectors import shift
  from tensorflow_probability.python.distributions import beta
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.distributions import student_t
  from tensorflow_probability.python.distributions import uniform
  from tensorflow_probability.python.experimental.bijectors import scalar_function_with_inferred_inverse
  from tensorflow_probability.python.internal import samplers
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 2 for calling the ScalarFunctionWithInferredInverseTests obj's underlying member method code with example usage: obj.test_normal_cdf_gradients() without return types