code: def test_kl_divergence(self):
      q_scale = 2.0
      p = sample.Sample(
          independent.Independent(
              normal.Normal(loc=tf.zeros([3, 2]), scale=1), 1
          ),
          [5, 4],
          validate_args=True,
      )
      q = sample.Sample(
          independent.Independent(
              normal.Normal(loc=tf.zeros([3, 2]), scale=2.0), 1
          ),
          [5, 4],
          validate_args=True,
      )
      actual_kl = kullback_leibler.kl_divergence(p, q)
      expected_kl = (
          (5 * 4)
          * (0.5 * q_scale**-2.0 - 0.5 + np.log(q_scale))
          * np.ones([3])  # Actual KL.
          * 2
      )  # Batch, events.
      self.assertAllClose(expected_kl, self.evaluate(actual_kl))
  
imports: import functools
  import os
  from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import exp
  from tensorflow_probability.python.bijectors import scale
  from tensorflow_probability.python.bijectors import scale_matvec_tril
  from tensorflow_probability.python.distributions import cholesky_lkj
  from tensorflow_probability.python.distributions import exponential
  from tensorflow_probability.python.distributions import independent
  from tensorflow_probability.python.distributions import kullback_leibler
  from tensorflow_probability.python.distributions import log_prob_ratio
  from tensorflow_probability.python.distributions import logistic
  from tensorflow_probability.python.distributions import lognormal
  from tensorflow_probability.python.distributions import mvn_diag
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.distributions import poisson
  from tensorflow_probability.python.distributions import sample
  from tensorflow_probability.python.distributions import transformed_distribution
  from tensorflow_probability.python.distributions import uniform
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 5 for calling the SampleDistributionTest obj's underlying member method code with example usage: obj.test_kl_divergence() without return types