ColabのTPU環境でmodel.fitしたときに、通常の環境で得られるhistory(誤差や精度のログ)が消えていることがあります。その対応法を示します。原因はTPU用のモデルに変換したからkeras.callbacks.Historyを使おうまとめ原因はTPU用のモデルに変換したからまず結論からいうとこの現象はCPU/GPU環境では再発しません。TPU環境特有の現象です。はじめはtensorflow.kerasの仕様変更を疑ったのですが、GPU環境で試した所再発しませんでした。以下、CPU・GPU環境の場合です。batch_size=1024)print(history)print(history.history)出力は以下の通りです。いつもどおりにhistoryが記録されていますね。[0.7527333334287007]}ところがTPU環境でやると、一度TPU用のモデルに変換するため結果が変わります。batch_size=1024)print(history)print(history.history)このようにTPUのモデルに変換します(モデル定義までは同じです)。出力は以下のように変わります。'history'なんとhistoryが記録されていません。そのためhistory.historyととってもエラーになってしまいます。これに気づくのは訓練が終わった後なので、かなりがっかりすると思います(自分は「は?(半ギレ)」ってなりました)。考えればまあわからなくもなくて、keras_to_tpu_modelでTPUのモデルに変換したから、historyが記録されていないのは仕方がないのかもしれない。バグなのかもしれない。これは現状解決策があります。keras.callbacks.Historyを使おうTensorFlow(Keras)にはHistory用のコールバックが用意されています。https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/History割とそっけない説明なのですが、historyを記録してくれるコールバックのようです。これを使ってみましょう。callbacks=[history])print(history)print(history.history)このように変更してみます(Historyクラスの継承や定義は必要ないです)。当面はこれで良さそうです。ちなみにこのHistoryのコールバックはCPU・GPU環境でも有効です。このコールバックを入れておけばCPU、GPU、TPU全ての環境に対応できるというわけです。まとめTPU環境ではモデルのクラスが変わるため、historyを取りたいときはHistoryのコールバックを使おう。訓練が終わったあとにエラー出て後悔したくないなら忘れないように。Commentコメントをキャンセルメールアドレスが公開されることはありません。