code: def testShapes(self):
      seed_stream = test_util.test_seed_stream()
      loc = tf.random.normal(
          shape=[3, 2, 3], seed=seed_stream(), dtype=self.dtype
      )
      scale_row = tf.linalg.LinearOperatorLowerTriangular(
          self._random_tril_matrix([5, 1, 2, 2], seed_stream()),
          is_non_singular=True,
      )
      scale_col = tf.linalg.LinearOperatorLowerTriangular(
          self._random_tril_matrix([7, 1, 1, 3, 3], seed_stream()),
          is_non_singular=True,
      )
  
      matrix_normal = mnlo.MatrixNormalLinearOperator(
          loc, scale_row, scale_col, validate_args=True
      )
  
      self.assertAllEqual((2, 3), matrix_normal.event_shape)
      self.assertAllEqual((7, 5, 3), matrix_normal.batch_shape)
  
      self.assertAllEqual(
          (2, 3), self.evaluate(matrix_normal.event_shape_tensor())
      )
      self.assertAllEqual(
          (7, 5, 3), self.evaluate(matrix_normal.batch_shape_tensor())
      )
  
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 6 for calling the _MatrixNormalTest obj's underlying member method code with example usage: obj.testShapes() without return types