code: def test_end_to_end(self):
      x = tf.constant(-0.5)
      d = normal.Normal(
          loc=0.0, scale=deferred_tensor.DeferredTensor(x, tf.math.exp)
      )
      with tf.GradientTape(watch_accessed_variables=False) as tape:
          tape.watch(x)
          negloglik = -d.log_prob(0.0)
      g = tape.gradient(negloglik, [x])
      self.assertAllNotNone(g)
      self.assertEqual([1.0], self.evaluate(g))
  
imports: import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import scale
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.internal import tensor_util
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.util import deferred_tensor
label_desc: Use image node_id 5 for calling the ConvertNonrefToTensorTest obj's underlying member method code with example usage: obj.test_end_to_end() without return types