class_docstr: Tests for discrete_policy_entropy op.
class_docstr_tok: ["Tests","for","discrete_policy_entropy","op","."]
code: def testShapeInference2D(self, batch_size, num_actions, normalise):
      policy_logits = tf.placeholder(
          tf.float32, shape=[batch_size, num_actions]
      )
      op = pg_ops.discrete_policy_entropy_loss(
          policy_logits, normalise=normalise
      )
      op.extra.entropy.get_shape().assert_is_compatible_with(
          [batch_size]
      )
      op.loss.get_shape().assert_is_compatible_with([batch_size])
  
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 5 for calling the EntropyCostTest obj's underlying member method code with example usage: obj.testShapeInference2D(batch_size, num_actions, normalise) without return types