code: def testFullyReparameterized(self):
      df = constant_op.constant(2.0)
      mu = constant_op.constant(1.0)
      sigma = constant_op.constant(3.0)
      with backprop.GradientTape() as tape:
          tape.watch(df)
          tape.watch(mu)
          tape.watch(sigma)
          student = student_t.StudentT(df=df, loc=mu, scale=sigma)
          samples = student.sample(100)
      grad_df, grad_mu, grad_sigma = tape.gradient(
          samples, [df, mu, sigma]
      )
      self.assertIsNotNone(grad_df)
      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 random_seed
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.ops.distributions import student_t
  from tensorflow.python.platform import test
  from tensorflow.python.platform import tf_logging
label_desc: Use image node_id 21 for calling the StudentTTest obj's underlying member method code with example usage: obj.testFullyReparameterized() without return types