Keras 3 API 文件 / Callbacks API (回呼 API) / EarlyStopping (提前停止)

EarlyStopping (提前停止)

[來源]

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_deltapatience(如果適用)。一旦發現不再減少,model.stop_training 會被標記為 True,並且訓練終止。

要監控的量需要能在 logs 字典中取得。為了做到這一點,請在 model.compile() 中傳遞損失或指標。

Arguments (參數)

  • monitor (監控指標): 要監控的量。預設為 "val_loss"
  • min_delta (最小變動): 監控量要符合改善條件的最小變動量,也就是說,小於 min_delta 的絕對變動量將被視為沒有改善。預設為 0
  • patience (耐心值): 在停止訓練之前,沒有改善的 epoch 數。預設為 0
  • verbose (verbosity) (詳細程度): Verbosity (詳細程度) 模式,0 或 1。模式 0 為靜音模式,模式 1 在回呼採取動作時顯示訊息。預設為 0
  • mode (模式): {"auto", "min", "max"} 其中之一。在 min 模式中,當監控的量停止減少時,訓練將停止;在 "max" 模式中,當監控的量停止增加時,訓練將停止;在 "auto" 模式中,方向會從監控量的名稱自動推斷。預設為 "auto"
  • baseline (基準線): 監控量的基準線值。如果不是 None,如果模型沒有顯示超過基準線的改善,訓練將停止。預設為 None
  • restore_best_weights (還原最佳權重): 是否從監控量具有最佳值的 epoch 還原模型權重。如果為 False,則使用在訓練的最後一步獲得的模型權重。無論相對於 baseline 的效能如何,都會還原一個 epoch。如果沒有 epoch 優於 baseline,訓練將運行 patience 個 epoch,並從該組中最佳的 epoch 還原權重。預設為 False
  • start_from_epoch (起始 epoch): 在開始監控改善之前要等待的 epoch 數。這允許一個暖機期,在此期間不預期有任何改善,因此訓練不會停止。預設為 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