在Keras中,有没有办法交叉验证正在监控的EarlyStopping(monitor = 'val_acc', patience = 5)的提前停止指标?在允许训练进入下一个时期之前,是否可以对模型进行交叉验证,以获得更稳健的测试误差估计?我发现,早期停止度量,比如验证集上的准确性,可能会受到高方差的影响。早期停止的模型通常在看不见的数据上表现不佳,我怀疑这是因为与验证集方法相关的高方差。
为了最小化早期停止指标中的方差,我想在模型从epoch i训练到epoch i + 1时对早期停止指标进行k折叠交叉验证。我想在epoch i上使用模型,将训练数据分成10个部分,在9个部分上学习,估计其余部分的误差,重复,以便所有10个部分都有机会成为验证集,然后像往常一样使用完整的训练数据继续进行训练,以epoch i + 1。10个误差估计的平均值有望成为一个更健壮的度量,可以用于早期停止。
我曾尝试编写一个包含k-折交叉验证的自定义度量函数,但我无法使其正常工作。有没有办法交叉验证被监控的提前停止指标,可能是通过Keras模型内部的自定义函数或Keras模型外部的循环?
谢谢!!
发布于 2018-10-15 12:30:43
发布于 2018-10-17 04:02:12
我想,使用@VincentPakson建议的回调会更干净、更高效,但所需的编程级别超出了我的能力范围。我可以通过以下方式创建一个for循环来执行我想要的操作:
使用model.save().
我很想得到一个更好的答案,但这似乎是可行的。慢慢地。
https://stackoverflow.com/questions/52788635
复制相似问题