#Kerasのfitの使い方を備忘録を兼ねて記述しておきます。
erly_stpg = EarlyStopping(patience=10, verbose=1,monitor='val_loss' , mode = 'min')
chkfile = '/root/・・・・・・/' + '{0:2d}'.format(Vernum)+'_{epoch:02d}-{val_loss:.4f}.hdf5' #format関数
chck_pont = ModelCheckpoint(filepath = chkfile, monitor='val_loss', verbose=1, save_best_only=True, mode='min')
history_callback = model.fit(x_train, y_train, batch_size=128, epochs=12, validation_split=0.1, shuffle = True , \
callbacks=[erly_stpg , chck_pont],validation_data=(x_val,y_val) , verbose = 0)
主なコードは上記のとおりです。
個別に説明します。
erly_stpg = EarlyStopping(patience=10, verbose=1,monitor='val_loss' , mode = 'min') #early Stoppingを設定する
chkfile = '/root/・・・・・・/' + '{0:2d}'.format(Vernum)+'_{epoch:02d}-{val_loss:.4f}.hdf5' #format関数
#チェックポイント(後述)をセーブするファイル。Vernumは事前に記録してある実験ナンバー
#epoch,val_lossはFormatを用いなくてもそのまま記述できるようだ
chck_pont = ModelCheckpoint(filepath = chkfile, monitor='val_loss', verbose=1, save_best_only=True, mode='min')
学習途中を記録する
filepath:記録するファイル名、固定すると上書きされてしまうため、今回変数を使用
monitor:記録要否を判定する変数
verbose:エコーの有無を指示
save_best_only:現時点で最もよかったら記録
mode:望小か望大を指示
history_callback = model.fit(x_train, y_train, batch_size=128, epochs=12, validation_split=0.1, shuffle = True , \
callbacks=[erly_stpg , chck_pont],validation_data=(x_val,y_val) , verbose = 0)
x_train...shuffleは省略
callbacks:学習途中のデータ(1epoch毎)を変数に返す
[]内に複数のオブジェクトを記載する
validation_data:別にバリデーションデータを用意する
今回は、学習データにノイズをいれたので、ノイズを入れていないデータを用意した。
###参考URL
https://qiita.com/cvusk/items/7bcd3bc2e82bb45c9e9c
モデルを時系列で書き出す方法が記載されています。
https://qiita.com/officefutaro/items/94af6799dc2451fa82c2
損失関数をファイルにセーブする方法を書いてあります(by 風太郎)
https://keras.io/ja/callbacks/
Keras日本語ドキュメント Callbackの部分です
https://keras.io/ja/models/model/#fit
Keras日本語ドキュメント Modelクラスのfitメソッドの解説です