code: def testGammaLogPDFMultidimensional(self):
      batch_size = 6
      alpha = constant_op.constant([[2.0, 4.0]] * batch_size)
      beta = constant_op.constant([[3.0, 4.0]] * batch_size)
      alpha_v = np.array([2.0, 4.0])
      beta_v = np.array([3.0, 4.0])
      x = np.array([[2.5, 2.5, 4.0, 0.1, 1.0, 2.0]], dtype=np.float32).T
      gamma = gamma_lib.Gamma(concentration=alpha, rate=beta)
      log_pdf = gamma.log_prob(x)
      log_pdf_values = self.evaluate(log_pdf)
      self.assertEqual(log_pdf.get_shape(), (6, 2))
      pdf = gamma.prob(x)
      pdf_values = self.evaluate(pdf)
      self.assertEqual(pdf.get_shape(), (6, 2))
      if not stats:
          return
      expected_log_pdf = stats.gamma.logpdf(
          x, alpha_v, scale=1 / beta_v
      )
      self.assertAllClose(log_pdf_values, expected_log_pdf)
      self.assertAllClose(pdf_values, np.exp(expected_log_pdf))
  
imports: import importlib
  import numpy
  from tensorflow.python.eager import backprop
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import tensor_shape
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.ops.distributions import gamma
  from tensorflow.python.ops.distributions import kullback_leibler
  from tensorflow.python.platform import test
  from tensorflow.python.platform import tf_logging
label_desc: Use image node_id 4 for calling the GammaTest obj's underlying member method code with example usage: obj.testGammaLogPDFMultidimensional() without return types