code: def testSample(self):
      histograms = np.array([[[0.2, 0.8], [0.4, 0.6]]])
      dist = categorical.Categorical(
          tf.math.log(histograms) - 50.0, validate_args=True
      )
      n = 10000
      samples = dist.sample(n, seed=test_util.test_seed())
      tensorshape_util.set_shape(samples, [n, 1, 2])
      self.assertEqual(samples.dtype, tf.int32)
      sample_values = self.evaluate(samples)
      self.assertFalse(np.any(sample_values < 0))
      self.assertFalse(np.any(sample_values > 1))
      self.assertAllClose(
          [[0.2, 0.4]], np.mean(sample_values == 0, axis=0), atol=1e-2
      )
      self.assertAllClose(
          [[0.8, 0.6]], np.mean(sample_values == 1, axis=0), atol=1e-2
      )
  
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 23 for calling the CategoricalTest obj's underlying member method code with example usage: obj.testSample() without return types