code: def testKLBatchBroadcast(self):
      batch_shape = [2]
      event_shape = [3]
      loc_a, scale_a = self._random_loc_and_scale(
          batch_shape, event_shape
      )
      # No batch shape.
      loc_b, scale_b = self._random_loc_and_scale([], event_shape)
      mvn_a = mvn_linear_operator.MultivariateNormalLinearOperator(
          loc=loc_a, scale=scale_a, validate_args=True
      )
      mvn_b = mvn_linear_operator.MultivariateNormalLinearOperator(
          loc=loc_b, scale=scale_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 = self._compute_non_batch_kl(
          loc_a[0, :],
          self.evaluate(scale_a.to_dense())[0, :, :],
          loc_b,
          self.evaluate(scale_b.to_dense()),
      )
      expected_kl_1 = self._compute_non_batch_kl(
          loc_a[1, :],
          self.evaluate(scale_a.to_dense())[1, :, :],
          loc_b,
          self.evaluate(scale_b.to_dense()),
      )
      self.assertAllClose(expected_kl_0, kl_v[0])
      self.assertAllClose(expected_kl_1, kl_v[1])
  
imports: import numpy
  from scipy import stats
  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 mvn_linear_operator
  from tensorflow_probability.python.internal import tensorshape_util
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 14 for calling the MultivariateNormalLinearOperatorTest obj's underlying member method code with example usage: obj.testKLBatchBroadcast() without return types