【问题标题】:How to write a earlystopping function in Python如何在 Python 中编写 Earlystopping 函数
【发布时间】:2021-05-03 23:01:44
【问题描述】:

我的损失是这样的:

loss = np.sum(np.square(A-B))

如何编写像 Keras 一样执行“earlystopping”的帮助函数?

目的:

如果损失上升或波动不大,那么我们停止并获得AB

【问题讨论】:

    标签: python-3.x numpy machine-learning neural-network


    【解决方案1】:

    我查看了 Keras 资源并找到了 EarlyStopping 的代码。我做了自己的回调,基于它:

    class EarlyStoppingByLossVal(Callback):
        def __init__(self, monitor='val_loss', value=0.00001, verbose=0):
            super(Callback, self).__init__()
            self.monitor = monitor
            self.value = value
            self.verbose = verbose
    
        def on_epoch_end(self, epoch, logs={}):
            current = logs.get(self.monitor)
            if current is None:
                warnings.warn("Early stopping requires %s available!" % self.monitor, RuntimeWarning)
    
            if current < self.value:
                if self.verbose > 0:
                    print("Epoch %05d: early stopping THR" % epoch)
                self.model.stop_training = True
    

    及用法:

    callbacks = [
        EarlyStoppingByLossVal(monitor='val_loss', value=0.00001, verbose=1),
        # EarlyStopping(monitor='val_loss', patience=2, verbose=0),
        ModelCheckpoint(
            kfold_weights_path, monitor='val_loss', save_best_only=True, 
            verbose=0
        )
    ]
    model.fit(
        X_train.astype('float32'), Y_train,
        batch_size=batch_size, nb_epoch=nb_epoch,
        shuffle=True, verbose=1, validation_data=(X_valid, Y_valid),
        callbacks=callbacks
    )
    

    【讨论】:

    • 您应该接受您自己的答案,以便将问题标记为对未来的访问者有帮助 - 这没有错。
    猜你喜欢
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2022-12-08
    • 1970-01-01
    相关资源
    最近更新 更多