Tensorflow:损失减少,但精度稳定

时间:2017-04-19 14:52:02

标签: tensorflow neural-network deep-learning conv-neural-network convolution

我的团队正在Tensorflow中培训CNN,对受损/可接受的部件进行二元分类。我们通过修改cifar10示例代码来创建代码。在我之前使用神经网络的经验中,我总是训练直到损失非常接近0(远低于1)。然而,我们现在正在训练期间(在单独的GPU上)使用验证集来评估我们的模型,并且看起来精确度在大约6.7k步之后停止增加,而在超过40k步之后损失仍然稳定地下降。这是由于过度拟合吗?一旦损失非常接近零,我们是否应该看到准确度再次出现飙升?目前的最大精度是不可接受的。我们应该杀了它并继续调整吗?您有什么推荐的吗?以下是我们修改后的代码和培训流程图。

https://gist.github.com/justineyster/6226535a8ee3f567e759c2ff2ae3776b

Precision and Loss Images

2 个答案:

答案 0 :(得分:16)

二元交叉熵损失的减少并不意味着准确度的提高。考虑标签1,在时间步长1,2,3和分类阈值0.5处预测0.2,0.4和0.6。时间步长1和2将导致损失减少但准确度没有增加。

通过过度拟合训练数据,确保您的模型具有足够的容量。如果模型过度拟合训练数据,请使用正弦化技术,例如丢失,L1和L2正则化以及数据增强来避免过度拟合。

最后,确认您的验证数据和培训数据来自同一分发。

答案 1 :(得分:0)

以下是我的建议,其中一个可能的问题是您的网络开始记忆数据,是的,您应该增加正规化,

是的,杀死它,减少训练损失并具有稳定的验证精度,这意味着你的网络容量很低(弱模型)试图更深入。