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()
中傳遞損失或指標。
Arguments (參數)
"val_loss"
。0
。0
。0
。{"auto", "min", "max"}
其中之一。在 min
模式中,當監控的量停止減少時,訓練將停止;在 "max"
模式中,當監控的量停止增加時,訓練將停止;在 "auto"
模式中,方向會從監控量的名稱自動推斷。預設為 "auto"
。None
,如果模型沒有顯示超過基準線的改善,訓練將停止。預設為 None
。False
,則使用在訓練的最後一步獲得的模型權重。無論相對於 baseline
的效能如何,都會還原一個 epoch。如果沒有 epoch 優於 baseline
,訓練將運行 patience
個 epoch,並從該組中最佳的 epoch 還原權重。預設為 False
。0
。Example (範例)
>>> 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