code: def testGeneralizedNormalFullyReparameterized(self):
      loc = tf.constant(4.0, self.dtype)
      scale = tf.constant(3.0, self.dtype)
      power = tf.constant(5.0, self.dtype)
  
      def sample_fn(m, s, p):
          gnormal = generalized_normal.GeneralizedNormal(
              loc=m, scale=s, power=p, validate_args=True
          )
          return gnormal.sample(100, seed=test_util.test_seed())
  
      _, [
          grad_loc,
          grad_scale,
          grad_power,
      ] = gradient.value_and_gradient(sample_fn, [loc, scale, power])
      grad_loc, grad_scale, grad_power = self.evaluate(
          [grad_loc, grad_scale, grad_power]
      )
      self.assertIsNotNone(grad_loc)
      self.assertIsNotNone(grad_scale)
      self.assertIsNotNone(grad_power)
  
imports: import math
  import numpy
  from scipy import stats
  from scipy.special import gamma
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import generalized_normal
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 18 for calling the _GeneralizedNormalTest obj's underlying member method code with example usage: obj.testGeneralizedNormalFullyReparameterized() and returns: gnormal