code: def testLogPMFShapeNoBatch(self):
      histograms = np.array([0.2, 0.8])
      dist = categorical.Categorical(
          tf.math.log(histograms), validate_args=True
      )
  
      log_prob = dist.log_prob(0)
      self.assertEqual(0, tensorshape_util.rank(log_prob.shape))
      self.assertAllEqual([], log_prob.shape)
  
      log_prob = dist.log_prob([[[1, 1], [1, 0]], [[1, 0], [0, 1]]])
      self.assertEqual(3, tensorshape_util.rank(log_prob.shape))
      self.assertAllEqual([2, 2, 2], log_prob.shape)
  
imports: from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import identity
  from tensorflow_probability.python.distributions import categorical
  from tensorflow_probability.python.distributions import kullback_leibler
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import tensorshape_util
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
  from tensorflow_probability.python.util import deferred_tensor
label_desc: Use image node_id 28 for calling the CategoricalTest obj's underlying member method code with example usage: obj.testLogPMFShapeNoBatch() without return types