code: def testExponentialLogSurvival(self):
      batch_size = 7
      lam = tf.constant([2.0] * batch_size)
      lam_v = 2.0
      x = np.array(
          [2.5, 2.5, 4.0, 0.1, 1.0, 2.0, 10.0], dtype=np.float32
      )
  
      dist = exponential.Exponential(rate=lam, validate_args=True)
  
      log_survival = dist.log_survival_function(x)
      self.assertEqual(log_survival.shape, (7,))
  
      expected_log_survival = sp_stats.expon.logsf(x, scale=1 / lam_v)
      self.assertAllClose(
          self.evaluate(log_survival), expected_log_survival
      )
  
imports: import numpy
  from scipy import stats
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import exponential
  from tensorflow_probability.python.distributions import kullback_leibler
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 4 for calling the ExponentialTest obj's underlying member method code with example usage: obj.testExponentialLogSurvival() without return types