code: def testShapeInferenceGAE(
      self, sequence_length, batch_size, num_actions
  ):
      T, B, A = (
          sequence_length,
          batch_size,
          num_actions,
      )  # pylint: disable=invalid-name
  
      loss, extra = pg_ops.sequence_advantage_actor_critic_loss(
          policy_logits=tf.placeholder(tf.float32, shape=[T, B, A]),
          baseline_values=tf.placeholder(tf.float32, shape=[T, B]),
          actions=tf.placeholder(tf.int32, shape=[T, B]),
          rewards=tf.placeholder(tf.float32, shape=[T, B]),
          pcontinues=tf.placeholder(tf.float32, shape=[T, B]),
          bootstrap_value=tf.placeholder(tf.float32, shape=[B]),
          lambda_=0.9,
          entropy_cost=1,
      )
  
      extra.discounted_returns.get_shape().assert_is_compatible_with(
          [T, B]
      )
      extra.advantages.get_shape().assert_is_compatible_with([T, B])
      extra.baseline_loss.get_shape().assert_is_compatible_with([B])
      extra.policy_gradient_loss.get_shape().assert_is_compatible_with(
          [B]
      )
      extra.entropy.get_shape().assert_is_compatible_with([B])
      extra.entropy_loss.get_shape().assert_is_compatible_with([B])
      loss.get_shape().assert_is_compatible_with([B])
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from absl.testing import parameterized
  import numpy
  from six.moves import xrange
  import tensorflow.compat.v1
  import tree
  from trfl import discrete_policy_gradient_ops
label_desc: Use image node_id 3 for calling the SequenceAdvantageActorCriticLossTest obj's underlying member method code with example usage: obj.testShapeInferenceGAE(sequence_length, batch_size, num_actions) without return types