docstr: Runs the op-under-test both forwards and backwards.
docstr_tok: ["Runs","the","op-under-test","both","forwards","and","backwards","."]
code: def _opFwdBwd(self, labels, logits, axis=-1):
      """Runs the op-under-test both forwards and backwards."""
      logits = ops.convert_to_tensor(
          logits
      )  # needed for the gradient tape
      with backprop.GradientTape() as tape:
          tape.watch(logits)
          loss = nn_ops.softmax_cross_entropy_with_logits(
              labels=labels, logits=logits, dim=axis
          )
      return loss, tape.gradient(loss, logits)
  
imports: import numpy
  from tensorflow.python.eager import backprop
  from tensorflow.python.framework import config
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import gradient_checker
  from tensorflow.python.ops import gradients_impl
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.ops.nn_grad import _SoftmaxCrossEntropyWithLogitsGrad
  from tensorflow.python.platform import test
label_desc: Use image node_id 1 for calling the XentOpTestBase obj's underlying member method code with example usage: obj._opFwdBwd(labels, logits, axis) and returns: loss,  tape