code: def testShapeInference(
      self, multi_actions, normalise_entropy, gae_lambda
  ):
      sequence_length = 4
      batch_size = 2
      self._setUp_a2c_loss(
          multi_actions,
          normalise_entropy,
          gae_lambda,
          sequence_length=sequence_length,
          batch_size=batch_size,
      )
  
      sequence_batch_shape = tf.TensorShape(
          [sequence_length, batch_size]
      )
      batch_shape = tf.TensorShape(batch_size)
      self.assertEqual(
          self._extra.discounted_returns.get_shape(),
          sequence_batch_shape,
      )
      self.assertEqual(
          self._extra.advantages.get_shape(), sequence_batch_shape
      )
      self.assertEqual(
          self._extra.policy_gradient_loss.get_shape(), batch_shape
      )
      self.assertEqual(
          self._extra.baseline_loss.get_shape(), batch_shape
      )
      self.assertEqual(self._extra.entropy.get_shape(), batch_shape)
      self.assertEqual(
          self._extra.entropy_loss.get_shape(), batch_shape
      )
      self.assertEqual(self._loss.get_shape(), batch_shape)
  
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 tensorflow_probability
  import tree
  from trfl import policy_gradient_ops
label_desc: Use image node_id 2 for calling the SequenceA2CLossTest obj's underlying member method code with example usage: obj.testShapeInference(multi_actions, normalise_entropy, gae_lambda) without return types