Caffeにおける「学習済みモデルの保存と読み込み」について詳しく説明します。この機能は、学習を途中で中断して再開したり、学習済みの重みをテストや転移学習に利用する際に重要です。
1. 学習済みモデルの保存
Caffeでは、solver.prototxt に以下のような設定を記述することで、定期的にスナップショット(学習中のネットワークの状態)を保存することができます。
設定項目
-
snapshot: 何イテレーションごとにスナップショットを保存するか(例:1000イテレーションごと)。 -
snapshot_prefix: 保存するファイルのプレフィックス。実際には以下のようなファイルが保存されます。
保存されるファイル例
2. モデルの読み込み
(1) テストやファインチューニングのための読み込み
train_val.prototxt や deploy.prototxt を用いた推論やファインチューニングの際、caffe.Net クラスを使って .caffemodel ファイルを読み込みます。
Python例(PyCaffe)
C++例
(2) 学習の再開(resume training)
学習の途中から再開するには、.solverstate ファイルを指定します。
コマンドライン
この方法では、オプティマイザの状態(例えば、SGDのモーメンタム値など)も復元されるため、完全な学習の再開が可能です。
3. deploy用のモデル
推論専用で使用する際は、deploy.prototxt(学習に不要なレイヤーを除いた定義ファイル)と、学習済み .caffemodel を組み合わせます。
特記事項
-
deploy.prototxtではdataレイヤーを省略し、inputフィールドで入力サイズを指定するのが一般的です。 -
推論時には
caffe.TESTモードを使用してください。
まとめ
| 目的 | 使用ファイル | 使用方法 |
|---|---|---|
| 学習の保存 | .caffemodel, .solverstate | snapshot機能 |
| 学習済みモデル読込 | .caffemodel | CopyTrainedLayersFrom |
| 再学習(resume) | .solverstate | –snapshot オプションで指定 |
| 推論 | .caffemodel + deploy.prototxt | caffe.TEST でネットワーク初期化 |
必要に応じてこれらのファイルを適切に保存・管理することが、効率的なモデル開発と実運用につながります。
生成日:2025/05/23