Keras顺序模型中要使用的时期数

时间:2019-06-26 22:26:31

标签: python keras conv-neural-network

我正在构建Keras顺序模型以进行二进制图像分类。现在,当我使用大约70到80个纪元时,我开始获得良好的验证准确性(81%)。但是我被告知,这对于将影响网络性能的时代而言是一个很大的数字。

我的问题是:是否有数量不应该超过的时期,请注意,我有2000个训练图像和800个验证图像。

3 个答案:

答案 0 :(得分:0)

Y!他们是您的问题的解决方案。选择时期,例如1k,2k,只需在神经网络上使用早期停止即可。

提前停止: Keras通过称为Early-stopping的回调来支持提前停止训练。

此回调允许您指定要监视的性能指标,触发器,并且一旦触发,它将停止训练过程。例如,如果在前5个时期中精度没有提高,则应用一个触发器来停止训练。因此,如果您的准确性没有提高,喀拉拉邦就会通过回叫看到前5个时期,并停止训练

Early Stopping link :

答案 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解决您要解决的问题的解决方案。此外,您还可以阅读许多在线资料,了解如何应对过度拟合。