我正在训练一个图像多分类器。使用Keras中的损失SparseCategoricalCrossentropy。我发现下面的问题。
import tensorflow as tf
a=tf.constant([[0.,0.,1.],[1.,0.,0.]])
b=tf.constant([[0.,0.,1.],[0.,1.,0.]])
loss_object = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
loss = loss_object(a, b)
字符串
a表示我的2个输入数据的真标签。b表示我的2个输入数据的预测标签。计算遇到以下错误。
ValueError: `labels.shape` must equal `logits.shape` except for the last dimension. Received: labels.shape=(6,) and logits.shape=(2, 3)
型
不知何故,真正的标签被压平,变得不可计算。我如何处理这个问题来计算关于2个输入数据的SparseCategoricalCrossentropy?
1条答案
按热度按时间iszxjhcz1#
您的标签不是稀疏的,它们是独热编码的,这意味着
SparseCategoricalCrossentropy
将无法工作。字符串
到
型
这将起作用,因为a是调用损失函数的第一个参数,这是地面真值,或
y_true
:型
b
可以进行one-hot编码,因为TensorFlow会将其转换为正确的格式,但这似乎只有在a
已经是正确的(稀疏)格式时才有效。