code: def sparse_categorical_crossentropy(
      target, output, from_logits=False, axis=-1
  ):
      """Categorical crossentropy with integer targets.
  
      Args:
          target: An integer tensor.
          output: A tensor resulting from a softmax
              (unless `from_logits` is True, in which
              case `output` is expected to be the logits).
          from_logits: Boolean, whether `output` is the
              result of a softmax, or is a tensor of logits.
          axis: Int specifying the channels axis. `axis=-1` corresponds to data
              format `channels_last`, and `axis=1` corresponds to data format
              `channels_first`.
  
      Returns:
          Output tensor.
      """
      if axis != -1 and axis != len(output.shape) - 1:
          raise ValueError(
              f"Only axis=-1 is currently supported. Received: axis={axis}"
          )
      output, from_logits = _get_logits(
          output,
          from_logits,
          "Softmax",
          "sparse_categorical_crossentropy",
      )
  
      target = tf.convert_to_tensor(target)
      target = tf.cast(target, dtype="int64")
      output = tf.convert_to_tensor(output)
      if (
          len(target.shape) == len(output.shape)
          and target.shape[-1] == 1
      ):
          target = tf.squeeze(target, axis=-1)
  
      if len(output.shape) < 1:
          raise ValueError(
              "Argument `output` must be at least rank 1. "
              "Received: "
              f"output.shape={output.shape}"
          )
      if len(target.shape) != len(output.shape[:-1]):
          raise ValueError(
              "Argument `output` must have rank (ndim) `target.ndim - 1`. "
              "Received: "
              f"target.shape={target.shape}, output.shape={output.shape}"
          )
      for e1, e2 in zip(target.shape, output.shape[:-1]):
          if e1 is not None and e2 is not None and e1 != e2:
              raise ValueError(
                  "Arguments `target` and `output` must have the same shape "
                  "up until the last dimension: "
                  f"target.shape={target.shape}, output.shape={output.shape}"
              )
  
      if not from_logits:
          output = tf.clip_by_value(output, epsilon(), 1 - epsilon())
          output = tf.math.log(output)
  
      result = tf.nn.sparse_softmax_cross_entropy_with_logits(
          labels=target, logits=output
      )
      return result
  
imports: import warnings
  import tensorflow
  from keras.backend import standardize_data_format
  from keras.backend import standardize_dtype
  from keras.backend.common.backend_utils import compute_conv_transpose_output_shape
  from keras.backend.config import epsilon
  from keras.backend.tensorflow.core import cast
  from keras.backend.tensorflow.core import convert_to_tensor
label_desc: Use image node_id 30 for calling a global function with example usage: sparse_categorical_crossentropy(target, output, from_logits, axis) and returns: result