code: def testLogSoftmaxAxes(self):
      arr = _get_weak_tensor(np.linspace(0.0, 1, 12).reshape(3, 4))
      x_neg_axis = nn_ops.log_softmax_v2(arr, axis=-2)
      y_pos_axis = nn_ops.log_softmax_v2(arr, axis=0)
      z_gt_axis = nn_ops.log_softmax_v2(arr, axis=0)
      x_neg_axis_tf = self.evaluate(x_neg_axis)
      y_pos_axis_tf = self.evaluate(y_pos_axis)
      z_gt_axis_tf = self.evaluate(z_gt_axis)
      eps = 1e-3
      self.assertAllClose(x_neg_axis_tf, y_pos_axis_tf, eps)
      self.assertAllClose(y_pos_axis_tf, z_gt_axis_tf, eps)
  
imports: from absl.testing import parameterized
  import numpy
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import test_util
  from tensorflow.python.framework import weak_tensor
  from tensorflow.python.ops import gradient_checker_v2
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn_impl
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.ops import weak_tensor_ops
  from tensorflow.python.ops import weak_tensor_test_util
  import tensorflow.python.ops.nn_grad
  from tensorflow.python.platform import test
label_desc: Use image node_id 3 for calling the LogSoftmaxTest obj's underlying member method code with example usage: obj.testLogSoftmaxAxes() without return types