我正在构建Keras顺序模型以进行二进制图像分类。现在,当我使用大约70到80个纪元时,我开始获得良好的验证准确性(81%)。但是我被告知,这对于将影响网络性能的时代而言是一个很大的数字。
我的问题是:是否有数量不应该超过的时期,请注意,我有2000个训练图像和800个验证图像。
答案 0 :(得分:0)
Y!他们是您的问题的解决方案。选择时期,例如1k,2k,只需在神经网络上使用早期停止即可。
提前停止: Keras通过称为Early-stopping的回调来支持提前停止训练。
此回调允许您指定要监视的性能指标,触发器,并且一旦触发,它将停止训练过程。例如,如果在前5个时期中精度没有提高,则应用一个触发器来停止训练。因此,如果您的准确性没有提高,喀拉拉邦就会通过回叫看到前5个时期,并停止训练
答案 1 :(得分:0)
如果纪元数非常多,则您的模型可能会过拟合,并且训练精度将达到100%。通过这种方法,您可以在训练和验证数据上绘制错误率。横轴是历元数,纵轴是错误率。当验证数据的错误率最小时,您应该停止训练。
您需要在正则化参数之间进行权衡。深度学习的主要问题是模型过度拟合。使用各种正则化技术,例如
i)减小批量大小
ii)数据增强(仅当您的数据不多样化时)
iii)批量归一化
iv)降低架构(主要是卷积层)的复杂性
v)引入辍学层(仅当您使用任何密集层时)
vi)学习率降低。
vii)转移学习
批处理大小与时代的权衡非常重要。此外,它取决于您的数据,并且因应用程序而异。在这种情况下,您必须稍微弄点数据才能知道确切的数字。通常,批处理大小为32个中等大小的图像需要10个历元,才能从卷积层中提取出良好的特征。同样,它是相对的
答案 2 :(得分:0)
Keras提供了您只需定义的“提早停止”功能。
EarlyStopping(patience=self.patience, verbose=self.verbose, monitor=self.monitor)
让我们说epochs参数等于80,就像您之前说过的那样。当您使用EarlyStopping函数时,纪元数成为最大纪元数。
您可以定义EarlyStopping函数以监视验证损失,例如,当该损失不再改善时,它将为它提供一些最后的机会(您在耐心参数中输入的数字),以及监控值没有改善培训过程的最后机会将停止。
我认为,最佳实践是同时使用EarlyStopping和ModelCheckpoint,这是Keras API中提供的另一个回调函数,可以简单地保存您的最佳模型(您可以确定最佳方法,最佳损失或其他价值)测试您的结果)。
这是Keras解决您要解决的问题的解决方案。此外,您还可以阅读许多在线资料,了解如何应对过度拟合。