我是机器学习的新手,目前正在尝试训练一个具有3个卷积层和1个完全连接层的卷积神经网络。我用的是25%的辍学率和0.0001的学习率。我有6000个150x200训练图像和13个输出类。我用的是tensorflow。我注意到一个趋势,我的损失稳步下降,但我的准确性只略有增加,然后再次下降。我的训练图像是蓝色的线条,我的验证图像是橙色的线条。x轴是台阶。
我想知道是不是有什么我不明白的地方,或者是什么可能导致这种现象?从我读过的材料来看,我认为低损耗意味着高精度。 这是我的损失函数。
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y))
softmax_cross_entropy_with_logits()和accurity是两个不同的概念,具有不同的公式定义。在正常情况下,我们可以通过最小化软最大交叉熵来获得更高的精度,但它们是以不同的方式计算的,因此我们不能期望它们总是以同步的方式增加或减少。
我们在CNN中使用了softmax交叉熵,因为它对神经网络训练是有效的。如果我们使用loss=(1-准确度)作为损失函数,用我们目前成熟的回溯训练方案来调整CNN神经网络的权值很难得到更好的结果,我真的做到了,并且证实了这个结论,你也可以自己尝试。可能是因为我们目前的落后训练方案,可能是因为我们的神经元定义(我们需要把它改成其他类型的神经元?)但是无论如何,目前在损失函数中使用精度并不是神经元网络训练的有效方法,所以正如那些人工智能科学家告诉我们的那样,使用softmax_cross_entropy_with_logits(),他们已经证实了这种方法是有效的,对于其他方法,我们还不知道。
这是因为损失和准确性是两个完全不同的东西(至少在逻辑上是这样的)!
考虑一个例子,其中您将
loss
定义为:在这种情况下,当您尝试最小化
loss
时,accuracy
会自动增加。现在考虑另一个例子,在这里您将
loss
定义为:尽管这没有任何意义,但从技术上讲,它仍然是一个有效的损失函数,并且您的
weights
仍在进行调整,以便将这种loss
最小化。但正如您所见,在本例中,
loss
和accuracy
之间没有关系,因此您不能期望两者同时增加/减少。注意:
Loss
将始终最小化(因此每次迭代后您的loss
将减少)!注:请用试图最小化的
loss
函数更新您的问题。相关问题 更多 >
编程相关推荐