EarlyStopping
类tf_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()
时传递损失或指标。
参数
{"auto", "min", "max"}
之一。在 min
模式下,当监测的量停止减少时,训练将停止;在 "max"
模式下,当监测的量停止增加时,训练将停止;在 "auto"
模式下,方向将从监测量的名称中自动推断。baseline
如何,都将恢复 epoch。如果没有任何 epoch 比 baseline
更好,训练将运行 patience
个 epoch,并从该集合中最佳 epoch 恢复权重。示例
>>> callback = tf.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 = tf.keras.models.Sequential([tf.keras.layers.Dense(10)])
>>> model.compile(tf.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