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