Tensorflow偶尔使用tf.losses.sigmoid_cross_entropy负值

时间:2017-07-12 11:02:40

标签: tensorflow loss sigmoid

我使用Inception-V4模型进行张量流的多标签分类。该模型的输出维度为51,对于这51个类,我的标签为1或0。我没有进一步修改Inception-V4。

为了学习多标记分类,我通过应用tf.losses.sigmoid_cross_entropy来使用sigmoid交叉熵损失。我的logits是未缩放的(没有激活功能),我的标签看起来也很好。总损失通过tf.losses.get_total_loss()计算。

现在整个系统都可以正常工作,并且可以毫无问题地学习许多时代。然而,在大约15到20个学习时期之后,它有时会产生负损失值。此时损失约为0.01,但有时会降至-0.15甚至更低(我曾经看到-1)。此外,我的模型的准确性在这些步骤之后也会下降,所以我认为它实际上会伤害它。

有谁知道我可能做错了什么?有谁之前经历过这个吗?我该怎么办?

我还没有包含我的代码,因为我认为它只是一个简单的Estimator管道,我直接接受了inception_v4的logits和auxLogits,并将这样的sigmoid交叉熵损失附加到它们。但是如果代码有帮助,我可以尝试缩小代码来添加它。

这就是logits的丢失情况:

This is what the loss of the logits looks like

0 个答案:

没有答案