英語リスニングNLP(自然言語処理)訓練の中断と再開(ModelCheckpoint)公開日:2020/09/24最終更新日:2023/01/04訓練に用いるデータが大きくなると,訓練に必要な時間も長くなり,一度に訓練するのが困難になります。そこで,それぞれのエポックが終了したときにモデルを保存し,あとで訓練を再開する方法を導入します。save_freq="epoch")ModelCheckpoint()はそれぞれのエポックが終了したときに,モデルの重みやモデルそのものを保存します。filepathは保存するファイル名です。ここではモデルそのもを保存するので,h5形式を指定します。verbose=1は,保存するときにメッセージを表示します。verbose=0とするとメッセージは表示されません。save_weights_only=Trueは,モデルの重みのみを保存します。一方でsave_weights_only=Falseはモデルそのものを保存します。モデルが保存されるとき,モデルは重みを含みます。したがって,あとで学習を再開するときに,重みとモデルの両方を読み込む必要はなく,モデルのみを読み込みます。save_freq="epoch"はそれぞれのエポックが終了したときに,ファイルを上書きします。この値は変更しないことが推奨されています。callbacks=cp_callback)最終的に,ModelCheckpoint()はfit()のcallbacksで呼び出します。load_model('model.h5')load_model()は保存されたモデルを読み込みます。モデルそのものを読み込んだ場合,再びモデルを構築する必要はありません。具体的には,Sequential(),mode.add(),model.compile()が不要です。これらのコードを削除またはコメントアウトし,model.fit()を実行します。callbacks=cp_callback)initial_epochは訓練を何番目のepochから開始するかを表します。epochから訓練を再開します。epochから数えることになります。initial_epochは必ずしも値を指定する必要はありませんが,訓練の量と結果の関係が分からなくなるので,値を指定した方がよいでしょう。