code: def testLogPDF(self, dist):
      loc, scale, conc = self.evaluate(
          [dist.loc, dist.scale, dist.concentration]
      )
      hp.assume(abs(loc / scale) < 1e7)
      xs = self.evaluate(dist.sample(seed=test_util.test_seed()))
  
      logp = dist.log_prob(xs)
      self.assertEqual(dist.batch_shape, logp.shape)
      p = dist.prob(xs)
      self.assertEqual(dist.batch_shape, p.shape)
  
      expected_logp = sp_stats.genpareto(
          conc, loc=loc, scale=scale
      ).logpdf(xs)
      actual_logp = self.evaluate(logp)
      self.assertAllClose(
          expected_logp, actual_logp, rtol=1e-5, atol=1e-5
      )
      self.assertAllClose(
          np.exp(expected_logp), self.evaluate(p), rtol=1e-5, atol=1e-5
      )
  
imports: import hypothesis
  import hypothesis.strategies
  import numpy
  from scipy import stats
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import generalized_pareto
  from tensorflow_probability.python.internal import hypothesis_testlib
  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 GeneralizedParetoTest obj's underlying member method code with example usage: obj.testLogPDF(dist) without return types