EarlyStopping 类keras.callbacks.EarlyStopping(
monitor="val_loss",
min_delta=0,
patience=0,
verbose=0,
mode="auto",
baseline=None,
restore_best_weights=False,
start_from_epoch=0,
)
当监控的指标停止改善时,停止训练。
假设训练的目标是最小化损失。在这种情况下,需要监控的指标是 "loss",模式是 "min"。model.fit() 训练循环将在每个 epoch 结束时检查损失是否不再下降,并考虑 min_delta 和 patience(如果适用)。一旦发现损失不再下降,model.stop_training 将被标记为 True,训练将终止。
需要监控的数量必须在 logs 字典中可用。要做到这一点,请在 model.compile() 中传递损失或指标。
参数
"val_loss"。0。0。0。{"auto", "min", "max"} 中的一个。在 min 模式下,当监控的数量停止下降时,训练将停止;在 "max" 模式下,当监控的数量停止增加时,训练将停止;在 "auto" 模式下,方向将根据监控数量的名称自动推断。默认为 "auto"。None,当模型没有显示出相对于基线的改进时,训练将停止。默认为 None。False,则使用训练最后一步获得的模型权重。无论与 baseline 的性能如何,都会恢复一个 epoch。如果没有 epoch 能够改进 baseline,训练将运行 patience 个 epoch,并从该集合中的最佳 epoch 恢复权重。默认为 False。0。示例
>>> callback = keras.callbacks.EarlyStopping(monitor='loss',
... patience=3)
>>> # This callback will stop the training when there is no improvement in
>>> # the loss for three consecutive epochs.
>>> model = keras.models.Sequential([keras.layers.Dense(10)])
>>> model.compile(keras.optimizers.SGD(), loss='mse')
>>> history = model.fit(np.arange(100).reshape(5, 20), np.zeros(5),
... epochs=10, batch_size=1, callbacks=[callback],
... verbose=0)
>>> len(history.history['loss']) # Only 4 epochs are run.
4