code: def testGeneralizedNormalVariance(self):
      # scale will be broadcast to [[7, 7, 7], [7, 7, 7], [7, 7, 7]].
      loc = np.array([[1.0, 2.0, 3.0]]).T
      scale = [7.0]
      power = np.array([0.5, 1.0, 3.0])
  
      gnormal = generalized_normal.GeneralizedNormal(
          loc=self.make_input(loc),
          scale=self.make_input(scale),
          power=self.make_input(power),
          validate_args=True,
      )
  
      self.assertAllEqual((3, 3), gnormal.variance().shape)
      scale_broadcast = scale * np.ones_like(loc)
      reference = np.square(scale_broadcast) * (
          sp_gamma(3.0 / power) / sp_gamma(1.0 / power)
      )
      self.assertAllClose(
          reference,
          self.evaluate(gnormal.variance()),
          atol=0,
          rtol=1e-5,
      )
  
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 15 for calling the _GeneralizedNormalTest obj's underlying member method code with example usage: obj.testGeneralizedNormalVariance() without return types