Keras Tensorflow 二元交叉熵损失大于1

7

库:Keras,后端:Tensorflow

我正在训练一个单类/二元分类问题,我的最终层有一个单节点,激活函数是sigmoid类型。我使用二元交叉熵损失编译模型。当我运行代码训练模型时,我发现损失值大于1。这样对吗?或者我做错了什么?我已经检查了标签。它们全都是0和1。

二元交叉熵损失是否可能大于1?


什么是“单一类/二元分类”?如何在二元分类中只有一个类别? - OneRaynyDay
1
输出基本上是1或0。所以它要么属于该类,要么不属于。例如猫图像分类。 - Blue
你得到了什么值? - OneRaynyDay
在6-8的范围内,我没有对其进行多次训练,因为据我所知,损失应该在0-1的范围内。 - Blue
如果你的数据也在0到1之间,我认为你不必太担心。 - Daniel Möller
遇到了类似的问题 - 原来我在训练之前忘记标准化变量了。 - Grzegorz Rut
2个回答

9

Keras binary_crossentropy 首先将您的预测概率转换为 logits。然后使用 tf.nn.sigmoid_cross_entropy_with_logits 计算交叉熵并返回平均值。从数学上讲,如果您的标签为 1,而您的预测概率很低(例如 0.1),则交叉熵可能大于 1,如 losses.binary_crossentropy(tf.constant([1.]), tf.constant([0.1]))


8

是的,没错,交叉熵没有特定的范围限制,它只是正数(> 0)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接