我正在构建一个Keras序列模型来进行二值图像分类。现在,当我使用大约70到80个历元时,我开始获得很好的验证精度(81%)。但我被告知,这是一个非常大的数字将用于划时代,这将影响网络的性能。
我的问题是:是否有数量有限的时代,我不应该超过,请注意,我有2000张培训图像和800张验证图像。
发布于 2019-06-27 06:49:29
如果划时代的数量很高,你的模型可能会过分适合,你的训练精度将达到100%。在这种方法中,您可以在培训和验证数据上绘制错误率。水平轴是年数,垂直轴是误差率。当验证数据的错误率最小时,应停止培训。
您需要在正则化参数之间进行权衡。深度学习的主要问题是过度拟合模型。使用了各种正则化技术,如
(一)减少批量。
(二)数据增强(仅当数据不多样时)
(三)批标准化
(4)降低建筑的复杂性(主要是卷积层)
(五)引入辍学层(只有在使用任何密集层的情况下)
(六)学习率下降。
(七)转移学习
批次大小与时代的权衡是相当重要的。而且,它依赖于您的数据,并且随应用程序的不同而不同。在这种情况下,您必须稍微使用数据才能知道确切的数字。通常,一批32幅中等大小的图像需要10个年代才能从卷积层中提取出较好的特征。再说一次,它是相对的
发布于 2019-06-27 07:16:37
您只需定义Keras提供的早期停止函数。
EarlyStopping(patience=self.patience, verbose=self.verbose, monitor=self.monitor)就像你之前说过的,假设历元参数等于80。当您使用EarlyStopping函数时,历元数就变成了最大的历元数。
您可以定义EarlyStopping函数来监视验证损失,例如,当该损失不再改善时,它将给它一些最后的机会(您在耐心参数中输入的数字),如果在最后一次机会之后,被监控的值没有改进培训过程。
在我看来,最佳实践是同时使用EarlyStopping和ModelCheckpoint,这是Keras中提供的另一个回调函数,它简单地保存了您上一个最好的模型(您决定了测试结果的最佳方法、最佳损失或其他值)。
这是您试图解决的问题的Keras解决方案。此外,有很多在线材料,你可以阅读如何处理过度适合。
发布于 2019-06-27 05:24:55
雅亚!他们是解决你问题的方法。选择纪元,例如1k ,2k只是在你的神经网络上使用早期回采。
早期停止: Keras通过一个名为“早期停止”的回调来支持早期停止训练。
此回调允许您指定要监视的性能度量、触发器,一旦触发,它将停止培训过程。例如,您应用了一个触发器,如果在前5个周期中精度没有提高,则该触发器将停止训练。因此,如果你的准确率没有提高,卡拉斯就会通过回叫看到前5个时代,并停止训练。
https://stackoverflow.com/questions/56781680
复制相似问题