What’s the difference between sparse_softmax_cross_entropy_with_logits and softmax_cross_entropy_with_logits?
The difference is simple:
- For sparse_softmax_cross_entropy_with_logits, labels must have the shape [batch_size] and the dtype int32 or int64. Each label is an int in range [0, num_classes-1].
For softmax_cross_entropy_with_logits, labels must have the shape [batch_size, num_classes] and dtype float32 or float64. - Labels used in softmax_cross_entropy_with_logits are the one hot version of labels used in sparse_softmax_cross_entropy_with_logits.
- Another tiny difference is that with sparse_softmax_cross_entropy_with_logits, you can give -1 as a label to have loss 0 on this label.
sparse_softmax_cross_entropy_with_logits的label必须有的shape是[batch_size],dtype是int32或者 int64。每个label是一个int 范围是[0, num_classes-1]
softmax_cross_entropy_with_logits中的label是one-hot 版本的对应到sparse_ 的值。
另一个小的区别是sparse_softmax_cross_entropy_with_logits 可以使用小于0的值作为label.