我正在使用CNN(通过tensorflow)训练图像分类模型 . 我的数据集有600个样本,有90个类( balanced ),这是我的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%
...
一切似乎都没问题,我的训练损失正在减少,同时验证集的准确性也在增加 .
测试:
但是,在 similar but different 数据集上进行测试时,第一个时期之后模型的准确性要比第5个时期(10,20,100等)之后的模型好得多 .
在检查了this问题之后,似乎我的学习任务太容易了,而且更多时期的训练会导致问题出现.624722_问题 .
所以:
- 这是一种过度拟合,因为我的控制台窗口输出结果不是吗?发生了什么?
谢谢你的帮助 .
1 回答
是的,你是过度拟合 . 您需要对来自同一分布的数据进行训练,验证和测试,否则不能对错误做出任何假设 .