kch*_*462 3 python neural-network keras
我的拟合函数是非凸函数,因此损失函数有时会在改善之前恶化。鉴于此,我想使用提前停止,但仅在前 100 个或更多 epoch 之后。到目前为止,我有这个:
# 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)
Run Code Online (Sandbox Code Playgroud)
不幸的是,拟合在 10 个左右的 epoch 后很早就停止了。我想等到第100个纪元开始提前停止。有任何想法吗?除了提前停止之外的任何建议也值得赞赏。
McL*_*nce 11
如果你使用patience=100你的训练不应该在 epoch 100 之前停止。但是,如果你想有一个短暂的patience但又希望它稍后开始,你可以使用 colllin 描述的方法。如果你想要进一步的定制,你总是可以定义你自己的回调,这里EarlyStopping作为父级。出于您的目的,您只需要覆盖初始化程序和此处on_epoch_end找到的方法:
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)
Run Code Online (Sandbox Code Playgroud)
在从父类调用函数之前,您只需将要监视条件的最早时期提供给初始值设定项并检查条件。
| 归档时间: |
|
| 查看次数: |
2097 次 |
| 最近记录: |