code: def testKLBatchBroadcast(self):
      batch_shape = [2]
      event_shape = [3]
      mu_a, sigma_a = self._random_mu_and_sigma(
          batch_shape, event_shape
      )
      # No batch shape.
      mu_b, sigma_b = self._random_mu_and_sigma([], event_shape)
      mvn_a = mvn_tril.MultivariateNormalTriL(
          loc=mu_a,
          scale_tril=np.linalg.cholesky(sigma_a),
          validate_args=True,
      )
      mvn_b = mvn_tril.MultivariateNormalTriL(
          loc=mu_b,
          scale_tril=np.linalg.cholesky(sigma_b),
          validate_args=True,
      )
  
      kl = kullback_leibler.kl_divergence(mvn_a, mvn_b)
      self.assertEqual(batch_shape, kl.shape)
  
      kl_v = self.evaluate(kl)
      expected_kl_0 = _compute_non_batch_kl(
          mu_a[0, :], sigma_a[0, :, :], mu_b, sigma_b
      )
      expected_kl_1 = _compute_non_batch_kl(
          mu_a[1, :], sigma_a[1, :, :], mu_b, sigma_b
      )
      self.assertAllClose(expected_kl_0, kl_v[0])
      self.assertAllClose(expected_kl_1, kl_v[1])
  
imports: import os
  from absl.testing import parameterized
  import numpy
  from scipy import stats
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import softplus
  from tensorflow_probability.python.bijectors import transform_diagonal
  from tensorflow_probability.python.distributions import kullback_leibler
  from tensorflow_probability.python.distributions import lognormal
  from tensorflow_probability.python.distributions import mvn_tril
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.internal import tensorshape_util
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 17 for calling the MultivariateNormalTriLTest obj's underlying member method code with example usage: obj.testKLBatchBroadcast() without return types