Path: blob/master/site/ja/guide/migrate/early_stopping.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
このノートブックは、最初に TensorFlow 1 で tf.estimator.Estimator
と早期停止フックを使用してから、次に TensorFlow 2 で Keras API またはカスタムトレーニングループを使用して、早期停止を使用してモデルトレーニングをセットアップする方法を示します。早期停止は、たとえば検証損失が特定のしきい値に達した場合にトレーニングを停止する正則化手法です。
TensorFlow 2 では、早期停止を実装する 3 つの方法があります。
組み込みの Keras コールバック(
tf.keras.callbacks.EarlyStopping
)を使用して、Model.fit
に渡します。カスタムコールバックを定義し、Keras
Model.fit
に渡します。カスタムトレーニングループでカスタム早期停止ルールを記述します(
tf.GradientTape
を使用)。
セットアップ
TensorFlow 1: 早期停止フックと tf.estimator による早期停止
MNIST データセットの読み込みと前処理、および tf.estimator.Estimator
で使用されるモデル定義の関数を定義することから始めます。
TensorFlow 1 では、早期停止は tf.estimator.experimental.make_early_stopping_hook
で早期停止フックを設定することで機能します。引数なしで関数を受け入れることができる should_stop_fn
のパラメータとして、フックを make_early_stopping_hook
メソッドに渡します。 should_stop_fn
が True
を返すと、トレーニングは停止します。
次の例は、トレーニング時間を最大 20 秒に制限する早期停止手法を実装する方法を示しています。
TensorFlow 2: 組み込みコールバックと Model.fit による早期停止
MNIST データセットと単純な Keras モデルを準備します。
TensorFlow 2 では、組み込みの Keras Model.fit
(または Model.evaluate
)を使用する場合、組み込みのコールバック(tf.keras.callbacks.EarlyStopping
)を Model.fit
の callbacks
パラメータに渡すことで、早期停止を構成できます。
EarlyStopping
コールバックは、ユーザー指定の指標を監視し、改善が止まるとトレーニングを終了します。(詳細については、組み込みメソッドによるトレーニングおよび評価または API ドキュメントを確認してください。)
以下は、損失を監視し、改善を示さないエポック数が 3
(patience
)に設定された後にトレーニングを停止する早期停止コールバックの例です。
TensorFlow 2: カスタムコールバックと Model.fit による早期停止
Model.fit
(または Model.evaluate
)の callbacks
パラメータに渡すこともできるカスタムの早期停止コールバックを実装することもできます。
この例では、self.model.stop_training
が True
に設定されると、トレーニングプロセスが停止されます。
TensorFlow 2: カスタムトレーニングループによる早期停止
TensorFlow 2 では、組み込みの Keras メソッドを使用してトレーニングと評価を行っていない場合、カスタムトレーニングループで早期停止を実装できます。
Keras API を使用して、別の単純なモデル、オプティマイザ、損失関数、および指標を定義することから始めます。
tf.GradientTape と @tf.function
デコレータを使用してパラメータ更新関数を定義し、スピードアップします。
次に、早期停止ルールを手動で実装できるカスタムトレーニングループを記述します。
以下の例は、検証損失が特定のエポック数にわたって改善されない場合にトレーニングを停止する方法を示しています。
Next steps
API ドキュメントで、Keras の組み込み早期停止コールバック API の詳細をご覧ください。
最小損失での早期停止を含む、カスタム Keras コールバックの書き方を学びます。
Keras 組み込みメソッドを使用したトレーニングと評価について学びます。
EarlyStopping
コールバックを使用する 過学習および未学習 のチュートリアルで、一般的な正則化手法を調べます。