code: def testKLDivergence(self, p_batch_shape, q_batch_shape):
      seed_stream = test_util.test_seed_stream()
      dists = []
      for batch_shape in [p_batch_shape, q_batch_shape]:
          loc, scale_row, scale_col = self._random_loc_and_scale(
              batch_shape, [2, 3], seed_stream
          )
          dists.append(
              mnlo.MatrixNormalLinearOperator(
                  loc, scale_row, scale_col, validate_args=True
              )
          )
  
      p, q = dists[0], dists[1]
      expected = p._as_multivariate_normal().kl_divergence(
          q._as_multivariate_normal()
      )
      actual = p.kl_divergence(q)
  
      self.assertAllClose(expected, actual, atol=1e-5)
  
imports: from absl.testing import parameterized
  import numpy
  from scipy import stats
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import shift
  from tensorflow_probability.python.bijectors import softplus
  from tensorflow_probability.python.bijectors import transform_diagonal
  from tensorflow_probability.python.distributions import matrix_normal_linear_operator
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 3 for calling the _MatrixNormalTest obj's underlying member method code with example usage: obj.testKLDivergence(p_batch_shape, q_batch_shape) without return types