我使用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的丢失情况: