code: def testParetoLogPdfMultidimensional(self):
      batch_size = 6
      scale = tf.constant([[2.0, 4.0, 5.0]] * batch_size)
      scale_v = [2.0, 4.0, 5.0]
      concentration = tf.constant([[1.0]] * batch_size)
      concentration_v = 1.0
  
      x = np.array([[6.0, 7.0, 9.2, 5.0, 6.0, 7.0]], dtype=np.float32).T
  
      dist = pareto.Pareto(concentration, scale, validate_args=True)
      log_prob = dist.log_prob(x)
      self.assertEqual(log_prob.shape, (6, 3))
      self.assertAllClose(
          self.evaluate(log_prob),
          self._scipy_pareto(concentration_v, scale_v).logpdf(x),
      )
  
      prob = dist.prob(x)
      self.assertEqual(prob.shape, (6, 3))
      self.assertAllClose(
          self.evaluate(prob),
          self._scipy_pareto(concentration_v, scale_v).pdf(x),
      )
  
imports: import numpy
  from scipy import stats
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import kullback_leibler
  from tensorflow_probability.python.distributions import pareto
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 8 for calling the ParetoTest obj's underlying member method code with example usage: obj.testParetoLogPdfMultidimensional() without return types