diff --git a/paddle/fluid/operators/softmax_with_cross_entropy_op.cu b/paddle/fluid/operators/softmax_with_cross_entropy_op.cu index cb4eeab56a6fd..4e83e1ac7340d 100644 --- a/paddle/fluid/operators/softmax_with_cross_entropy_op.cu +++ b/paddle/fluid/operators/softmax_with_cross_entropy_op.cu @@ -268,6 +268,10 @@ struct HardLabelSoftmaxWithCrossEntropyFunctor { int64_t idx_remain = idx % remain; // labels, loss view as [n, remain] int64_t idx_lbl = idx_n * remain + idx_remain; + PADDLE_ENFORCE(labels_[idx_lbl] >= 0 && labels_[idx_lbl] < d_, + "The value of label[%ld] expected >= 0 and < %ld," + "but got %ld. Please check input value.", + idx_lbl, d_, labels_[idx_lbl]); // It also would ignore labels not in range(class_num). if (idx_axis != labels_[idx_lbl]) { log_softmax_[idx] = exp_on_device(log_softmax_[idx]);