code: def testLogPMFShape(self):
      with self.cached_session():
          # shape [1, 2, 2]
          histograms = [[[0.2, 0.8], [0.4, 0.6]]]
          dist = categorical.Categorical(math_ops.log(histograms))
  
          log_prob = dist.log_prob([0, 1])
          self.assertEqual(2, log_prob.get_shape().ndims)
          self.assertAllEqual([1, 2], log_prob.get_shape())
  
          log_prob = dist.log_prob([[[1, 1], [1, 0]], [[1, 0], [0, 1]]])
          self.assertEqual(3, log_prob.get_shape().ndims)
          self.assertAllEqual([2, 2, 2], log_prob.get_shape())
  
imports: from absl.testing import parameterized
  import numpy
  from tensorflow.python.eager import backprop
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import tensor_util
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import gradients_impl
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.ops import random_ops
  from tensorflow.python.ops.distributions import categorical
  from tensorflow.python.ops.distributions import kullback_leibler
  from tensorflow.python.ops.distributions import normal
  from tensorflow.python.platform import test
label_desc: Use image node_id 22 for calling the CategoricalTest obj's underlying member method code with example usage: obj.testLogPMFShape() without return types