库:Keras,后端:Tensorflow
我正在训练一个单类/二元分类问题,我的最终层有一个单节点,激活函数是sigmoid类型。我使用二元交叉熵损失编译模型。当我运行代码训练模型时,我发现损失值大于1。这样对吗?或者我做错了什么?我已经检查了标签。它们全都是0和1。
二元交叉熵损失是否可能大于1?
库:Keras,后端:Tensorflow
我正在训练一个单类/二元分类问题,我的最终层有一个单节点,激活函数是sigmoid类型。我使用二元交叉熵损失编译模型。当我运行代码训练模型时,我发现损失值大于1。这样对吗?或者我做错了什么?我已经检查了标签。它们全都是0和1。
二元交叉熵损失是否可能大于1?
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]))
。
是的,没错,交叉熵没有特定的范围限制,它只是正数(> 0)。