code: def testShapeInference(self):
      op = nn_ops.softmax(
          [
              [[1.0, 1.0, 1.0, 1.0], [1.0, 2.0, 3.0, 4.0]],
              [[2.0, 3.0, 4.0, 5.0], [6.0, 7.0, 8.0, 9.0]],
              [[5.0, 4.0, 3.0, 2.0], [1.0, 2.0, 3.0, 4.0]],
          ]
      )
      self.assertEqual([3, 2, 4], op.get_shape())
  
imports: import unittest
  import numpy
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import errors_impl
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.platform import test
  from tensorflow.python.platform import tf_logging
label_desc: Use image node_id 21 for calling the SoftmaxTest obj's underlying member method code with example usage: obj.testShapeInference() without return types