我是机器学习的新手,目前正在尝试训练具有3个卷积层和1个完全连接层的卷积神经网络。我正在使用25%的辍学率和0.0001的学习率。我有6000个150x200的训练图像和13个输出类。我正在使用tensorflow。我注意到一种趋势,我的损失稳步下降,但我的准确度仅略有增加,然后又回落。我的训练图像是蓝线,而验证图像是橙色线。 x轴为步长。
我想知道是否有我不了解的东西,或者可能是这种现象的可能原因?从我阅读的 Material 来看,我认为低损耗意味着高精度。
这是我的损失函数。
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y))
最佳答案
这是因为损失和精度是两个完全不同的东西(至少在逻辑上是如此)!
考虑一个示例,其中您将loss
定义为:
loss = (1-accuracy)
在这种情况下,当您尝试最小化
loss
时,accuracy
自动增加。现在考虑另一个示例,其中您将
loss
定义为:loss = average(prediction_probabilities)
尽管没有任何意义,但从技术上讲,它仍然是有效的损失函数,并且为了最小化此类
weights
,仍对loss
进行了调整。但是正如您所看到的,在这种情况下,
loss
和accuracy
之间没有关系,因此您不能期望两者同时增加/减少。注意:
Loss
将始终最小化(因此,每次迭代后loss
都会减少)!PS:请使用您要最小化的
loss
函数更新您的问题。关于python - 为什么在卷积神经网络中可能具有较低的损失,但准确性却很低?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38728895/