当训练损失减少且验证集的准确性增加时,为什么模型在第一个时期后产生最佳性能?

时间:2018-07-03 13:10:32

标签: tensorflow machine-learning deep-learning computer-vision conv-neural-network

我正在使用CNN(通过tensorflow)训练图像分类模型。我的数据集包含90万个类别(平衡)的60万个样本,这是我的NN体系结构概述:

conv(relu) --> conv(relu) --> dense(relu) --> dense(relu) --> dense(sigmoid)

培训:

我在8:2之前将数据集分为训练集和验证集,这是我的训练配置:

batch_size = 16
epochs = 200
learning_rate = 0.0001 

我的控制台窗口显示:

epoch 1: loss 0.34, validation accuracy 96%
epoch 2: loss 0.12, validation accuracy 98%
epoch 3: loss 0.09, validation accuracy 98.5%
epoch 4: loss 0.06, validation accuracy 99%
epoch 5: loss 0.04, validation accuracy 99.7%
...

一切似乎都很好,我的训练损失正在减少,同时验证集的准确性也在增加。

测试:

但是,当在相似但不同数据集上进行测试时,第一个时期之后的模型的准确性比第5个(10、20、100等)时期之后的模型好得多

在检查了this个问题之后,看来我的学习任务太简单了,训练更多的时期会导致过度拟合问题。

所以:

  • 这是一种过度拟合,因为控制台窗口的输出显示否吗?发生了什么事?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

是的,您过拟合。您需要对来自同一分布的数据进行训练,验证和测试,否则无法对错误进行任何假设。