當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.keras.callbacks.EarlyStopping用法及代碼示例


當監控的指標停止改進時停止訓練。

繼承自:Callback

用法

tf.keras.callbacks.EarlyStopping(
    monitor='val_loss', min_delta=0, patience=0, verbose=0,
    mode='auto', baseline=None, restore_best_weights=False
)

參數

  • monitor 要監控的數量。
  • min_delta 被監測數量的最小變化被認為是改進,即小於min_delta的絕對變化,將被視為沒有改進。
  • patience 訓練停止後沒有改善的 epoch 數。
  • verbose 詳細模式。
  • mode {"auto", "min", "max"} 之一。 min模式下,當監測的數量停止減少時,訓練將停止;在"max"模式下,當監控的數量停止增加時它會停止;在"auto"模式下,根據監控量的名稱自動推斷方向。
  • baseline 監控數量的基線值。如果模型沒有顯示出對基線的改進,則訓練將停止。
  • restore_best_weights 是否從監測量的最佳值的epoch恢複模型權重。如果為 False,則使用在訓練的最後一步獲得的模型權重。無論相對於 baseline 的性能如何,都會恢複一個紀元。如果在 baseline 上沒有任何 epoch 得到改進,則將針對 patience epoch 運行訓練,並從該集合中的最佳 epoch 恢複權重。

假設訓練的目標是最小化損失。這樣,要監控的指標將是 'loss' ,模式將是 'min'model.fit() 訓練循環將在每個 epoch 結束時檢查損失是否不再減少,如果適用的話,考慮 min_deltapatience。一旦發現它不再減少,model.stop_training 將被標記為 True 並且訓練終止。

要監控的數量需要在logs dict 中可用。為此,請在 model.compile() 傳遞損失或指標。

例子:

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

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.keras.callbacks.EarlyStopping。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。