solver.prototxtによる学習設定

Caffeにおける学習プロセスの制御は、solver.prototxtファイルによって行われます。このファイルは、ネットワークの学習に必要な各種パラメータや設定を記述する「ソルバ定義ファイル」であり、Caffeのトレーニングループ全体を管理します。

以下に、solver.prototxtの主要な構成要素について詳しく説明します。


1. net(または train_net / test_net

  • 役割: 学習に使用するネットワーク定義ファイル(train_val.prototxtなど)のパスを指定します。

  • :

    prototxt
    net: "models/my_model/train_val.prototxt"
  • 複数のネットを使う場合は、train_net / test_net を個別に指定します。


2. base_lr(基本学習率)

  • 役割: 初期の学習率を指定します。学習率は学習の進行とともに変更される可能性があります。

  • :

    prototxt
    base_lr: 0.01

3. lr_policy(学習率ポリシー)

  • 役割: 学習率の変化方法を指定します。

  • 主なオプション:

    • "fixed": 学習率は固定。

    • "step": 一定ステップごとに学習率を減衰。

    • "exp": 指数的に減衰。

    • "inv": 逆数的に減衰。

    • "multistep": 特定のステップで学習率を変更。

  • :

    prototxt
    lr_policy: "step" gamma: 0.1 stepsize: 10000

4. max_iter(最大イテレーション数)

  • 役割: 学習の最大イテレーション回数(繰り返し回数)を指定します。

  • :

    prototxt
    max_iter: 50000

5. momentum(モメンタム)

  • 役割: 勾配の更新における慣性を制御します。学習の安定化に寄与します。

  • :

    prototxt
    momentum: 0.9

6. weight_decay(重み減衰)

  • 役割: 過学習を防ぐためのL2正則化の係数です。

  • :

    prototxt
    weight_decay: 0.0005

7. solver_mode(ソルバの実行モード)

  • 役割: 学習の実行をCPUで行うかGPUで行うかを指定します。

  • :

    prototxt
    solver_mode: GPU

8. snapshot(スナップショット間隔)

  • 役割: モデルの中間保存(スナップショット)の間隔(イテレーション数)を指定します。

  • :

    prototxt
    snapshot: 10000 snapshot_prefix: "models/my_model/snapshot"

9. display(表示間隔)

  • 役割: ログ(損失値など)を標準出力に表示するイテレーション間隔を指定します。

  • :

    prototxt
    display: 100

10. test_interval, test_iter(テスト設定)

  • 役割: テストネットの評価タイミングとイテレーション数を設定します。

  • :

    prototxt
    test_interval: 5000 test_iter: 100

サンプル solver.prototxt

prototxt
net: "models/my_model/train_val.prototxt" test_iter: 100 test_interval: 5000 base_lr: 0.01 lr_policy: "step" gamma: 0.1 stepsize: 10000 display: 100 max_iter: 50000 momentum: 0.9 weight_decay: 0.0005 snapshot: 10000 snapshot_prefix: "models/my_model/snapshot" solver_mode: GPU

補足

  • solver.prototxtは、Caffeのcaffe trainコマンドで指定して学習を開始する際に使用します。

  • また、スナップショットファイル(.solverstate.caffemodel)を使って学習の再開が可能です。

生成日:2025/05/23