始める無料で始める

Early stopping: 最適化自体を最適化する

最適化の途中でモデルの性能を監視できるようになったので、もう効果が出なくなった時点で早期終了を使って最適化を止められます。最適化は改善が止まれば自動的に終了するため、動画で Dan が示したように、.fit()epochs は大きめに設定してかまいません。

最適化するモデルは model として用意されています。これまでと同様に、データは predictorstarget として読み込まれています。

この演習はコースの一部です

Pythonで学ぶDeep Learning入門

コースを見る

演習の手順

  • tensorflow.keras.callbacks から EarlyStopping をインポートします。
  • モデルをコンパイルします。optimizer'adam'、損失関数は 'categorical_crossentropy'、各エポックの精度を表示するために metrics=['accuracy'] を指定します。
  • early_stopping_monitor という名前の EarlyStopping オブジェクトを作成します。EarlyStopping()patience パラメータを 2 に設定し、検証損失が 2 エポック改善しなければ最適化を停止します。
  • predictorstarget を使ってモデルを学習します。epochs30、検証データの割合は validation_split=0.3 にします。さらに、callbacks パラメータに [early_stopping_monitor] を渡します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Import EarlyStopping
____

# Save the number of columns in predictors: n_cols
n_cols = predictors.shape[1]
input_shape = (n_cols,)

# Specify the model
model = Sequential()
model.add(Dense(100, activation='relu', input_shape = input_shape))
model.add(Dense(100, activation='relu'))
model.add(Dense(2, activation='softmax'))

# Compile the model
____

# Define early_stopping_monitor
early_stopping_monitor = ____

# Fit the model
____
コードを編集して実行