code: def testPoissonLogPmfDiscreteMatchesScipy(self):
      batch_size = 12
      lam = tf.constant([3.0] * batch_size)
      lam_v = 3.0
      x = np.array(
          [
              -3.0,
              -0.5,
              0.0,
              2.0,
              2.2,
              3.0,
              3.1,
              4.0,
              5.0,
              5.5,
              6.0,
              7.0,
          ],
          dtype=np.float32,
      )
      poisson = self._make_poisson(
          rate=lam,
          force_probs_to_zero_outside_support=True,
          validate_args=False,
      )
      log_pmf = poisson.log_prob(x)
      self.assertEqual(log_pmf.shape, (batch_size,))
      self.assertAllClose(
          self.evaluate(log_pmf), stats.poisson.logpmf(x, lam_v)
      )
  
      pmf = poisson.prob(x)
      self.assertEqual(pmf.shape, (batch_size,))
      self.assertAllClose(
          self.evaluate(pmf), stats.poisson.pmf(x, lam_v)
      )
  
imports: import numpy
  from scipy import stats
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import poisson
  from tensorflow_probability.python.distributions.internal import statistical_testing
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import implementation_selection
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 5 for calling the PoissonTest obj's underlying member method code with example usage: obj.testPoissonLogPmfDiscreteMatchesScipy() without return types