code: def testNegativeBinomialShapeBroadcast(self):
      probs = [[0.1, 0.2, 0.3]] * 5
      total_count = [[2.0]] * 5
      negbinom = negative_binomial.NegativeBinomial(
          total_count=total_count, probs=probs, validate_args=True
      )
  
      self.assertAllEqual(
          [5, 3], self.evaluate(negbinom.batch_shape_tensor())
      )
      self.assertAllEqual(tf.TensorShape([5, 3]), negbinom.batch_shape)
      self.assertAllEqual(
          [], self.evaluate(negbinom.event_shape_tensor())
      )
      self.assertAllEqual(tf.TensorShape([]), negbinom.event_shape)
  
imports: import numpy
  from scipy import stats
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import negative_binomial
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 2 for calling the NegativeBinomialTest obj's underlying member method code with example usage: obj.testNegativeBinomialShapeBroadcast() without return types