gpt4 book ai didi

python - 有没有一种方法可以在 Keras 中仅在第一个,比如说,100 个纪元之后实现提前停止

转载 作者:行者123 更新时间:2023-11-28 22:24:32 25 4
gpt4 key购买 nike

我的拟合函数是非凸的,因此损失函数有时会在改善之前恶化。鉴于此,我想使用提前停止,但只能在前 100 个或更多时期之后使用。到目前为止我有这个:

# Early stopping
ES = [EarlyStopping(monitor='val_loss',patience=100,verbose=1,mode='auto')]

# fit model
history = model.fit(x_train, y_train, epochs=1000,batch_size=50,verbose=2,shuffle=True,validation_split=.1,callbacks=ES)

不幸的是,拟合在 10 个左右的 epoch 后很早就停止了。我想等到第 100 个纪元开始提前停止。有任何想法吗?除了提前停止之外的任何建议也很受欢迎。

最佳答案

如果您使用 patience=100,您的训练不应在第 100 轮之前停止。但是,如果您想要一个短暂的 patience 但又希望它稍后开始,你可以使用 colllin 描述的方法。如果您想要进一步自定义,您始终可以定义自己的回调,此处使用 EarlyStopping 作为父回调。为了您的目的,您只需要重写初始化器和找到的 on_epoch_end 方法 here :

class CustomStopper(keras.callbacks.EarlyStopping):
def __init__(self, monitor='val_loss',
min_delta=0, patience=0, verbose=0, mode='auto', start_epoch = 100): # add argument for starting epoch
super(CustomStopper, self).__init__()
self.start_epoch = start_epoch

def on_epoch_end(self, epoch, logs=None):
if epoch > self.start_epoch:
super().on_epoch_end(epoch, logs)

您只需将要监视标准的最早纪元提供给初始化程序,并在从父类调用函数之前检查条件。

关于python - 有没有一种方法可以在 Keras 中仅在第一个,比如说,100 个纪元之后实现提前停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46287403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com