2017-09-20 25 views
2

tensorboardコールバックを使用して、トレーニング履歴のtfeventsログを保存して、Google CloudのテンソルフローバックエンドのKerasを使用してconvnetモデルを実行していました。私が学習曲線を監視していたとき、私はトレーニングの途中(学習曲線が平原上にあったこと)に気づきました。新しいtfeventsログがディスクに保存されました。そして、TensorBoardの学習曲線グラフは、訓練がval_lossであるエポック#1にリセットされ、スクラッチにもリセットされたことを示しました。Kerasは1回の.fit実行に対して複数のテンソルボードログを書き込むのはなぜですか?

これは本当に奇妙です。誰がここで何が起こっているのか知っていますか?どのような状況でKerasは自動的にトレーニングを再開し、新しいtfeventsログを保存しますか?

+0

適合コールとカスタムコールバックの実装を表示します。 – ldavid

+0

問題はKerasではなくGoogle Cloud MLに起因することが判明しました。 – astromz

+0

他のユーザーがこの問題をどのように回避できるかを質問してください。 – ldavid

答えて

1

この問題が発生したのは、ローカルマシンではなくGoogle Cloudでコードを実行したときだけでした。実際の原因は、Googleのエンジニアによって確認されたように、 はGoogleのクラウド保守であり、Kerasではありませんでした。 Google Compute Engine(GCE)のインスタンスは、警告や事前通知なしで保守のためにシャットダウンされることがあります(この回答時には記載されていません)。メンテナンスによってトレーニングインスタンスが最初から再起動され、新しいtfeventsログが生成され、以前のすべての進行状況がリセットされます。

これに対する解決策は、チェックポイントを頻繁に保存し、存在する場合は以前のモデルを読み込み、再起動時にトレーニングを再開することです。 GCEを使用する場合、Kerasのカスタムラムダコールバック関数を使用してチェックポイントをGoogle Cloud Storage(GCS)に保存する必要があります。そうしないと、チェックポイントはシャットダウン時に消えます。

関連する問題