code: public SDVariable sparseSoftmaxCrossEntropy(String name, @NonNull SDVariable logits, @NonNull SDVariable labels) {
          validateFloatingPoint("sparse softmax cross entropy", "logits (predictions)", logits);
          validateInteger("sparse softmax cross entropy", "labels", labels);
          Preconditions.checkState(labels.dataType().isIntType(), "Labels variable must be an integer type: got %s", logits);
          SDVariable result = f().lossSparseSoftmaxCrossEntropy(logits, labels);
          result = updateVariableNameAndReference(result, name);
          result.markAsLoss();
          return result;
      }
docs: As per {@link #softmaxCrossEntropy(String, SDVariable, SDVariable, LossReduce)} but the labels variable
  is represented as an integer array instead of the equivalent one-hot array.<br>
  i.e., if logits are rank N, then labels have rank N-1
  
  @param name   Name of the output variable. May be null
  @param logits Logits array ("pre-softmax activations")
  @param labels Labels array. Must be an integer type.
  @return Softmax cross entropy