code: def testNormalFullyReparameterized(self):
      mu = constant_op.constant(4.0)
      sigma = constant_op.constant(3.0)
      with backprop.GradientTape() as tape:
          tape.watch(mu)
          tape.watch(sigma)
          normal = normal_lib.Normal(loc=mu, scale=sigma)
          samples = normal.sample(100)
      grad_mu, grad_sigma = tape.gradient(samples, [mu, sigma])
      self.assertIsNotNone(grad_mu)
      self.assertIsNotNone(grad_sigma)
  
imports: import importlib
  import math
  import numpy
  from tensorflow.python.eager import backprop
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import tensor_shape
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import gradients_impl
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.ops import variables
  from tensorflow.python.ops.distributions import kullback_leibler
  from tensorflow.python.ops.distributions import normal
  from tensorflow.python.platform import test
  from tensorflow.python.platform import tf_logging
label_desc: Use image node_id 26 for calling the NormalTest obj's underlying member method code with example usage: obj.testNormalFullyReparameterized() without return types