在Keras中使用交叉验证的度量标准提前停止

fro*_*ael 5 python prediction cross-validation keras

在Keras有没有办法交叉验证被监控的早期停止指标EarlyStopping(monitor = 'val_acc', patience = 5)?在允许训练进入下一个时期之前,是否可以对模型进行交叉验证以获得更稳健的测试误差估计?我发现早期停止指标,比如验证集的准确性,可能会受到高度差异的影响.早期停止的模型在看不见的数据上通常表现不佳,我怀疑这是因为与验证集方法相关的高差异.

为了尽量减少早期停止指标的方差,我想k-fold交叉验证早期停止指标,因为模型从时代i到时代训练i + 1.我想在时代上取模型i,将训练数据分成10个部分,学习9个部分,估计剩余部分的误差,重复以便所有10个部分都有机会成为验证集,然后继续i + 1像往常一样用完整的训练数据训练时代.10个误差估计的平均值有望成为一个更强大的指标,可用于提前停止.

我曾尝试编写一个包含k-fold交叉验证的自定义度量函数,但我无法使其工作.有没有办法交叉验证被监控的早期停止指标,可能是通过Keras模型内部的自定义函数或Keras模型外部的循环?

谢谢!!

Vin*_*son 3

Keras 确实具有可高度定制的回调功能,如下 所示

如果您对 keras 当前函数不满意EarlyStopping(对我来说,该函数在训练期间检查验证损失),您可以创建一个自定义回调函数。还可以链接自定义回调函数。

如果您的问题是访问回调内的模型,那么就是您想要访问的变量,如本答案self中所示。我不完全理解为什么你想在测试阶段“重新开发”模型。但是这样,您仍然可以使用回调,在回调之后,您可以创建另一个可以“重新开发”模型的回调函数。EarlyStopping

如果您想访问模型更深层次的变量,您可以使用 Keras backend

我希望我有所帮助。