为什么在卷积神经网络中可能具有低损耗,但也具有非常低的精度?

Sam*_*m K 6 python machine-learning deep-learning tensorflow

我是机器学习的新手,我正在尝试用3个卷积层和1个完全连接的层来训练卷积神经网络.我使用的辍学概率为25%,学习率为0.0001.我有6000个150x200培训图像和13个输出类.我正在使用tensorflow.我注意到一个趋势,我的损失稳步下降,但我的准确性只是略有增加,然后再次下降.我的训练图像是蓝色线条,我的验证图像是橙色线条.x轴是步骤.在此输入图像描述

我想知道是否有一些我不理解或可能导致这种现象的原因?从我读过的材料中,我认为低损耗意味着高精度.这是我的损失功能.

cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y))
Run Code Online (Sandbox Code Playgroud)

San*_*ram 6

那是因为损失准确性是完全不同的两件事(至少在逻辑上是如此)!

考虑一个您定义loss为的示例:

loss = (1-accuracy)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,当您尝试最小化时lossaccuracy会自动增加。

现在考虑另一个定义loss为的示例:

loss = average(prediction_probabilities)
Run Code Online (Sandbox Code Playgroud)

尽管没有任何意义,但从技术上讲,它仍然是有效的损失函数,您weights仍在进行调整以最大程度地减少此类损失loss

但是正如您所看到的,在这种情况下,两者之间没有任何关系lossaccuracy因此您不能期望两者同时增加/减少。

注意:Loss将始终最小化(因此loss每次迭代后您的减少量)!

PS:请使用loss您要最小化的功能来更新您的问题。

  • OP评论说他们在softmax输出上使用多类对数丢失。 (2认同)