Caffeにおける学習プロセスの制御は、solver.prototxtファイルによって行われます。このファイルは、ネットワークの学習に必要な各種パラメータや設定を記述する「ソルバ定義ファイル」であり、Caffeのトレーニングループ全体を管理します。
以下に、solver.prototxtの主要な構成要素について詳しく説明します。
1. net(または train_net / test_net)
net(または train_net / test_net)-
役割: 学習に使用するネットワーク定義ファイル(
train_val.prototxtなど)のパスを指定します。 -
例:
-
複数のネットを使う場合は、
train_net/test_netを個別に指定します。
2. base_lr(基本学習率)
base_lr(基本学習率)-
役割: 初期の学習率を指定します。学習率は学習の進行とともに変更される可能性があります。
-
例:
3. lr_policy(学習率ポリシー)
lr_policy(学習率ポリシー)-
役割: 学習率の変化方法を指定します。
-
主なオプション:
-
"fixed": 学習率は固定。 -
"step": 一定ステップごとに学習率を減衰。 -
"exp": 指数的に減衰。 -
"inv": 逆数的に減衰。 -
"multistep": 特定のステップで学習率を変更。
-
-
例:
4. max_iter(最大イテレーション数)
max_iter(最大イテレーション数)-
役割: 学習の最大イテレーション回数(繰り返し回数)を指定します。
-
例:
5. momentum(モメンタム)
momentum(モメンタム)-
役割: 勾配の更新における慣性を制御します。学習の安定化に寄与します。
-
例:
6. weight_decay(重み減衰)
weight_decay(重み減衰)-
役割: 過学習を防ぐためのL2正則化の係数です。
-
例:
7. solver_mode(ソルバの実行モード)
solver_mode(ソルバの実行モード)-
役割: 学習の実行をCPUで行うかGPUで行うかを指定します。
-
例:
8. snapshot(スナップショット間隔)
snapshot(スナップショット間隔)-
役割: モデルの中間保存(スナップショット)の間隔(イテレーション数)を指定します。
-
例:
9. display(表示間隔)
display(表示間隔)-
役割: ログ(損失値など)を標準出力に表示するイテレーション間隔を指定します。
-
例:
10. test_interval, test_iter(テスト設定)
test_interval, test_iter(テスト設定)-
役割: テストネットの評価タイミングとイテレーション数を設定します。
-
例:
サンプル solver.prototxt
solver.prototxt
補足
-
solver.prototxtは、Caffeのcaffe trainコマンドで指定して学習を開始する際に使用します。 -
また、スナップショットファイル(
.solverstateや.caffemodel)を使って学習の再開が可能です。
生成日:2025/05/23