code: def test_gam_layer_call(self):
      example_inputs = tf.constant([[1], [0], [-1]], dtype=tf.float32)
      context_inputs = tf.constant(
          [[1, 2], [0, 1], [-1, 1]], dtype=tf.float32
      )
      gam = layers.GAMLayer(2, [3, 2, 1], 2, [3, 2, 1])
      outputs, sublogits_list, subweights_list = gam(
          (
              [example_inputs, example_inputs],
              [context_inputs, context_inputs],
          )
      )
      self.assertAllEqual([3, 1], outputs.get_shape().as_list())
      self.assertAllEqual(2, len(sublogits_list))
      for sublogits in sublogits_list:
          self.assertAllEqual([3, 1], sublogits.get_shape().as_list())
      self.assertAllEqual(2, len(subweights_list))
      for subweights in subweights_list:
          self.assertAllEqual([3, 2], subweights.get_shape().as_list())
  
imports: import tensorflow
  from tensorflow_ranking.python.keras import layers
label_desc: Use image node_id 2 for calling the GAMLayerTest obj's underlying member method code with example usage: obj.test_gam_layer_call() without return types