code: def testLogPDFScalarBatch(self):
      seed_stream = test_util.test_seed_stream()
      loc, scale_row, scale_col = self._random_loc_and_scale(
          [], [2, 3], seed_stream
      )
      matrix_normal = mnlo.MatrixNormalLinearOperator(
          loc, scale_row, scale_col, validate_args=True
      )
      x = tf.random.normal(
          shape=[2, 3], seed=seed_stream(), dtype=self.dtype
      )
  
      log_pdf = matrix_normal.log_prob(x)
      pdf = matrix_normal.prob(x)
  
      loc_, row_cov_, col_cov_, log_pdf_, pdf_, x_ = self.evaluate(
          [
              loc,
              tf.linalg.matmul(
                  scale_row.to_dense(),
                  scale_row.to_dense(),
                  adjoint_b=True,
              ),
              tf.linalg.matmul(
                  scale_col.to_dense(),
                  scale_col.to_dense(),
                  adjoint_b=True,
              ),
              log_pdf,
              pdf,
              x,
          ]
      )
      scipy_matrix_normal = stats.matrix_normal(
          mean=loc_, rowcov=row_cov_, colcov=col_cov_
      )
  
      self.assertEqual((), log_pdf_.shape)
      self.assertEqual((), pdf_.shape)
      self.assertAllClose(scipy_matrix_normal.logpdf(x_), log_pdf_)
      self.assertAllClose(scipy_matrix_normal.pdf(x_), pdf_)
  
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 4 for calling the _MatrixNormalTest obj's underlying member method code with example usage: obj.testLogPDFScalarBatch() without return types