TensorFlow(特に tf.keras)において、モデル全体の保存と復元は、トレーニング済みモデルを再利用したり、デプロイに活用する上で非常に重要な機能です。model.save() と tf.keras.models.load_model() を用いることで、アーキテクチャ、重み、学習状態(optimizerなど)を含むすべてを保存・復元できます。
1. モデル全体の保存:model.save()
model.save()
概要
model.save() は、モデルの構造(アーキテクチャ)、重み、コンパイル情報、オプティマイザの状態を含む、完全なモデルを保存します。
使い方
保存形式
-
SavedModel形式(デフォルト):ディレクトリとして保存され、TensorFlow Serving などでも使える。
-
HDF5形式(
.h5拡張子を指定):Keras専用の形式。
例(SavedModel形式)
例(HDF5形式)
2. モデルの復元:tf.keras.models.load_model()
tf.keras.models.load_model()
概要
tf.keras.models.load_model() を使うと、model.save() で保存したモデル全体を復元できます。復元後は、元のモデルと同様に predict(), evaluate(), fit() などのメソッドを使用可能です。
使い方
3. 保存内容の詳細
| 要素 | 保存されるか | 説明 |
|---|---|---|
| モデル構造 | ○ | Sequential または Functional API の構造 |
| 重み | ○ | 学習済みのパラメータ |
| コンパイル情報 | ○ | loss, optimizer, metrics など |
| オプティマイザの状態 | ○ | 学習を途中から再開可能な状態で保持 |
4. 注意点
-
カスタムレイヤーやカスタムオブジェクト(例:独自の損失関数、メトリクスなど)を使っている場合は、
custom_objects引数で明示的に指定が必要です。 -
HDF5形式では一部の最新の機能(例:サブクラス化モデルなど)に制限があります。可能であれば
SavedModel形式の使用が推奨されます。
5. 実用例
モデルの保存と復元(完全な流れ)
まとめ
| 操作 | 関数 | 説明 |
|---|---|---|
| モデルの保存 | model.save() |
モデル全体(構造・重み・学習情報)を保存 |
| モデルの復元 | tf.keras.models.load_model() |
保存されたモデルを完全に復元 |
| 保存形式(推奨) | SavedModel | TensorFlow標準形式、より柔軟で拡張性あり |
| 保存形式(互換) | HDF5(.h5) |
Kerasとの互換に優れるが一部制限あり |
必要に応じて、model.save_weights()(重みのみ)や tf.keras.models.model_from_json()(構造のみ)なども活用できますが、最も包括的な保存方法が model.save() です。
生成日:2025/05/22