Keras:使用 EarlyStopping 时如何恢复初始权重

数据挖掘 神经网络 喀拉斯 张量流 训练 早停
2022-02-15 01:11:56

使用 Keras,我像这样设置 EarlyStoping:

EarlyStopping(monitor='val_loss', min_delta=0, patience=100, verbose=0, mode='min', restore_best_weights=True)

当我训练时,它的行为几乎和宣传的一样。但是,我 在使用我知道是一个很好的基线的权重进行训练之前初始化我的模型权重。

问题是当我训练时,虽然 EarlyStopping 开始了,但它忽略了我的初始模型,并且经常选择自训练开始以来最好的模型(不包括初始模型)。它选择的模型通常比我最初的模型差。

有没有办法强制它考虑初始模型?

1个回答

根据EarlyStopping回调的实现方式,似乎没有办法做到这一点。在一个纪元结束后(在您的情况下,更具体地说是第一个纪元的结束),它检查纪元结束时的值是否是对当前值的改进(请参阅此函数,当前值存储在其中self.best。当模型的训练开始这个变量被初始化为numpy.Infof -numpy.Inf,取决于使用的模式(见这个函数。这意味着第一个时期结束时的值总是比训练开始时的值有改进,因此回调最多只会将权重恢复到第一个时期。