我在用Keras训练神经网络,使用早期停止。然而,当训练的时候,网络很早就到达了一个点,验证损失是不自然的低,这会在一段时间后变平,就像这样。

在patience = 50中使用早期停止时,验证损失会减少,但从一开始就不会低于验证损失。
我对网络进行了多次训练,结果是相同的,使用的是rmsprop (学习率为0.1到1e-4)和adam优化器。
有没有人知道是否有方法为网络设置一个“烧伤期”(如马尔可夫链蒙特卡罗模型),然后监测验证损失,以选择最佳模型?
发布于 2022-06-26 23:57:41
也许我迟到了2/3年,但我也有同样的问题,我已经解决了编写这个回调的问题:
class DelayedEarlyStopping(tf.keras.callbacks.EarlyStopping):
def __init__(self, burn_in, **kwargs):
super(DelayedEarlyStopping, self).__init__(**kwargs)
self.burn_in = burn_in
def on_epoch_end(self, epoch, logs=None):
if epoch >= self.burn_in:
super().on_epoch_end(epoch, logs)
else:
super().on_train_begin(logs=None)
early_stopping_monitor = DelayedEarlyStopping(
100,
monitor='val_total_loss',
min_delta=0,
patience=20,
verbose=0,
mode='auto',
baseline=40,
restore_best_weights=True
)https://stackoverflow.com/questions/56341753
复制相似问题