code: def testWeibullWeibullKL(self):
      a_concentration = np.array([3.0])
      a_scale = np.array([2.0])
      b_concentration = np.array([6.0])
      b_scale = np.array([4.0])
  
      a = weibull.Weibull(
          concentration=a_concentration,
          scale=a_scale,
          validate_args=True,
      )
      b = weibull.Weibull(
          concentration=b_concentration,
          scale=b_scale,
          validate_args=True,
      )
  
      kl = kullback_leibler.kl_divergence(a, b)
      expected_kl = (
          np.log(a_concentration / a_scale**a_concentration)
          - np.log(b_concentration / b_scale**b_concentration)
          + (
              (a_concentration - b_concentration)
              * (np.log(a_scale) - np.euler_gamma / a_concentration)
          )
          + (
              (a_scale / b_scale) ** b_concentration
              * np.exp(
                  np.math.lgamma(
                      b_concentration / a_concentration + 1.0
                  )
              )
          )
          - 1.0
      )
  
      x = a.sample(int(1e5), seed=test_util.test_seed())
      kl_samples = a.log_prob(x) - b.log_prob(x)
      kl_samples_ = self.evaluate(kl_samples)
  
      self.assertAllMeansClose(
          kl_samples_, expected_kl, axis=0, atol=0.0, rtol=1e-2
      )
      self.assertAllClose(self.evaluate(kl), expected_kl)
  
imports: import numpy
  from scipy import stats
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import gamma
  from tensorflow_probability.python.distributions import kullback_leibler
  from tensorflow_probability.python.distributions import weibull
  from tensorflow_probability.python.distributions.internal import statistical_testing
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 14 for calling the _WeibullTest obj's underlying member method code with example usage: obj.testWeibullWeibullKL() without return types