Early stopping: 最適化自体を最適化する
最適化の途中でモデルの性能を監視できるようになったので、もう効果が出なくなった時点で早期終了を使って最適化を止められます。最適化は改善が止まれば自動的に終了するため、動画で Dan が示したように、.fit() の epochs は大きめに設定してかまいません。
最適化するモデルは model として用意されています。これまでと同様に、データは predictors と target として読み込まれています。
この演習はコースの一部です
Pythonで学ぶDeep Learning入門
演習の手順
tensorflow.keras.callbacksからEarlyStoppingをインポートします。- モデルをコンパイルします。
optimizerは'adam'、損失関数は'categorical_crossentropy'、各エポックの精度を表示するためにmetrics=['accuracy']を指定します。 early_stopping_monitorという名前のEarlyStoppingオブジェクトを作成します。EarlyStopping()のpatienceパラメータを2に設定し、検証損失が 2 エポック改善しなければ最適化を停止します。predictorsとtargetを使ってモデルを学習します。epochsは30、検証データの割合は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
____