code: def testShapes(self):
      mu = self._rng.rand(3, 5, 2)
      chol, _ = self._random_chol(3, 5, 2, 2)
  
      mvn = mvn_tril.MultivariateNormalTriL(
          mu, chol, validate_args=True
      )
  
      # Shapes known at graph construction time.
      self.assertEqual(
          (2,), tuple(tensorshape_util.as_list(mvn.event_shape))
      )
      self.assertEqual(
          (3, 5), tuple(tensorshape_util.as_list(mvn.batch_shape))
      )
  
      # Shapes known at runtime.
      self.assertEqual(
          (2,), tuple(self.evaluate(mvn.event_shape_tensor()))
      )
      self.assertEqual(
          (3, 5), tuple(self.evaluate(mvn.batch_shape_tensor()))
      )
  
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 13 for calling the MultivariateNormalTriLTest obj's underlying member method code with example usage: obj.testShapes() without return types