code: def testSkellamLogPmfGradientAtZeroPmf(self):
      # Check that the derivative wrt parameter at the zero-prob points is zero.
      batch_size = 6
      rate1 = tf.constant(np.linspace(1, 7, 6), dtype=self.dtype)
      rate2 = tf.constant(np.linspace(9.1, 12.1, 6), dtype=self.dtype)
      x = tf.constant(
          [-2.1, -1.3, -0.5, 0.2, 1.5, 10.5], dtype=self.dtype
      )
  
      def make_skellam_log_prob(apply_to_second_rate=False):
          def skellam_log_prob(lam):
              return self._make_skellam(
                  rate1=rate1 if apply_to_second_rate else lam,
                  rate2=lam if apply_to_second_rate else rate2,
                  force_probs_to_zero_outside_support=True,
                  validate_args=False,
              ).log_prob(x)
  
          return skellam_log_prob
  
      _, dlog_pmf_dlam = self.evaluate(
          gradient.value_and_gradient(make_skellam_log_prob(), rate1)
      )
  
      self.assertEqual(dlog_pmf_dlam.shape, (batch_size,))
      self.assertAllClose(dlog_pmf_dlam, np.zeros([batch_size]))
  
      _, dlog_pmf_dlam = self.evaluate(
          gradient.value_and_gradient(
              make_skellam_log_prob(True), rate2
          )
      )
  
      self.assertEqual(dlog_pmf_dlam.shape, (batch_size,))
      self.assertAllClose(dlog_pmf_dlam, np.zeros([batch_size]))
  
imports: import numpy
  from scipy import stats
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import skellam
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 7 for calling the _SkellamTest obj's underlying member method code with example usage: obj.testSkellamLogPmfGradientAtZeroPmf() and returns: skellam_log_prob, self