categorical_crossentropy VS. sparse_categorical_crossentropy
转载qq_42961707 最后发布于2019-07-13 22:10:12 阅读数 5022 收藏
categorical_crossentropy 和 sparse_categorical_crossentropy 的区别在哪?
如果你的 targets 是 one-hot 编码,用 categorical_crossentropy
one-hot 编码:[0, 0, 1], [1, 0, 0], [0, 1, 0]
如果你的 tagets 是 数字编码 ,用 sparse_categorical_crossentropy
数字编码:2, 0, 1
或参考keras中文文档内容: https://keras-cn-docs.readthedocs.io/zh_CN/latest/other/metrices/
TensorFlow tf.keras.losses.SparseCategoricalCrossentropy
下面的例子,y_true的形状是[batch_size],y_pred的形状是[batch_size,num_class].
也就是说y_pred经过softmax层之后,是one-hot编码,SparseCategoricalCrossentropy将y_true变成了one-hot编码.
cce = tf.keras.losses.SparseCategoricalCrossentropy()
loss = cce(
[0, 1, 2],
[[.9, .05, .05], [.5, .89, .6], [.05, .01, .94]])
print('Loss: ', loss.numpy()) # Loss: 0.3239
init
__init__(
from_logits=False,
reduction=losses_utils.ReductionV2.AUTO,
name=None
)
call
__call__(
y_true,
y_pred,
sample_weight=None
)
参考:
官网
版权声明:本文为CSDN博主「Claroja」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/claroja/article/details/98594972