class_docstr: Test that SparseSoftmaxCrossEntropyWithLogits operates reproducibly.
  
  Inheriting from sparse_xent_op_test_base.SparseXentOpTestBase ensures that
  regular op functionality is correct when the deterministic code-path is
  selected.
  
  Note that because nn_ops.sparse_softmax_cross_entropy_with_logits_v2 calls
  nn_ops.sparse_softmax_cross_entropy_with_logits directly, the focus of
  testing is on the former in order to test both.
class_docstr_tok: ["Test","that","SparseSoftmaxCrossEntropyWithLogits","operates","reproducibly",".","Inheriting","from","sparse_xent_op_test_base.SparseXentOpTestBase","ensures","that","regular","op","functionality","is","correct","when","the","deterministic","code-path","is","selected",".","Note","that","because","nn_ops.sparse_softmax_cross_entropy_with_logits_v2","calls","nn_ops.sparse_softmax_cross_entropy_with_logits","directly",",","the","focus","of","testing","is","on","the","former","in","order","to","test","both","."]
docstr: Modified test for invalid labels on CPU.
  
  When running on CPU, the pre-existing, nondeterministic implementation
  throws a custom exception when any of the label values are invalid (less
  than zero or greater than the number of classes minus one). However, in the
  deterministic implementation, tf.gather throws an exception instead.
docstr_tok: ["Modified","test","for","invalid","labels","on","CPU",".","When","running","on","CPU",",","the","pre-existing",",","nondeterministic","implementation","throws","a","custom","exception","when","any","of","the","label","values","are","invalid","(","less","than","zero","or","greater","than","the","number","of","classes","minus","one",")",".","However",",","in","the","deterministic","implementation",",","tf.gather","throws","an","exception","instead","."]
code: def testInvalidLabelCPU(self):
      """Modified test for invalid labels on CPU.
  
      When running on CPU, the pre-existing, nondeterministic implementation
      throws a custom exception when any of the label values are invalid (less
      than zero or greater than the number of classes minus one). However, in the
      deterministic implementation, tf.gather throws an exception instead.
      """
      self._testInvalidLabelCPU(
          expected_regex="indices\[0\] = 4 is not in \[0, 4\)"
      )
  
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 errors_impl
  from tensorflow.python.framework import test_util
  from tensorflow.python.kernel_tests.sparse_ops import sparse_xent_op_test_base
  from tensorflow.python.ops.nn_grad import _SparseSoftmaxCrossEntropyWithLogitsGrad
  from tensorflow.python.ops import gen_nn_ops
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.platform import test
label_desc: Use image node_id 7 for calling the SparseXentOpDeterministicTest obj's underlying member method code with example usage: obj.testInvalidLabelCPU() without return types