code: def testShapesAreCorrect(self):
      k = gamma_exponential.GammaExponential(
          amplitude=1.0, length_scale=1.0, power=2.0
      )
  
      x = np.ones([4, 3], np.float32)
      y = np.ones([5, 3], np.float32)
  
      self.assertAllEqual([4, 5], k.matrix(x, y).shape)
      self.assertAllEqual(
          [2, 4, 5],
          k.matrix(tf.stack([x] * 2), tf.stack([y] * 2)).shape,
      )
  
      k = gamma_exponential.GammaExponential(
          amplitude=np.ones([2, 1, 1, 1], np.float32),
          length_scale=np.ones([1, 3, 1, 1], np.float32),
          power=np.ones([1, 1, 7, 1], np.float32),
      )
      self.assertAllEqual(
          [2, 3, 7, 2, 4, 5],
          # `--'  |  `--'
          #  |   |    `- matrix shape
          #  |   `- from input batch shapes
          #  `- from broadcasting kernel params
          k.matrix(
              tf.stack([x] * 2),  # shape [2, 4, 3]
              tf.stack([y] * 2),  # shape [2, 5, 3]
          ).shape,
      )
  
file_path: probability/tensorflow_probability/python/math/psd_kernels/gamma_exponential_test.py
imports: from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math.psd_kernels import exponentiated_quadratic
  from tensorflow_probability.python.math.psd_kernels import gamma_exponential
label_desc: Use image node_id 5 for calling the GammaExponentialTest obj's underlying member method code with example usage: obj.testShapesAreCorrect() without return types