Caffe的solver參數介紹


 

版權聲明:轉載請注明出處,謝謝! https://blog.csdn.net/Quincuntial/article/details/59109447

1. Parameters

solver.prototxt文件是用來告訴caffe如何訓練網絡的。solver.prototxt的各個參數的解釋如下:

  • base_lr 
    這個參數是用來表示網絡的初始學習率的。這個值是一個浮點型實數。
  • lr_policy 
    這個參數是用來表示學習率隨着時間是如何變化的。值是字符串,需要加""。學習率變化的可選參數有: 
    “step”——需要設置stepsize。根據gamma參數和stepsize參數來降低學習率,base_lr * gamma ^ (floor(iter / stepsize))iter是當前迭代次數。學習率每迭代stepsize次變化一次。 
    “multistep”——與step類似,需要設置stepvalue,學習率根據stepvalue進行變化。 
    “fixed”——學習率base_lr保持不變。 
    “inv”——學習率變化公式為base_lr * (1 + gamma * iter) ^ (- power) 
    “exp”——學習率變化公式為base_lr * gamma ^ iter} 
    “poly”——學習率以多項式形式衰減,到最大迭代次數時降為0。學習率變化公式為base_lr * (1 - iter/max_iter) ^ (power)。 
    “sigmoid”——學習率以S型曲線形式衰減,學習率變化公式為base_lr * (1 / (1 + exp(-gamma * (iter - stepsize))))
  • gamma 
    這個參數表示學習率每次的變化程度,值為實數。
  • stepsize 
    這個參數表示什么時候應該進行訓練的下一過程,值為正整數。主要用在lr_policystep的情況。
  • stepvalue 
    這個參數表示什么時候應該進行訓練的下一過程,值為正整數。主要用在lr_policymultistep的情況。
  • max_iter 
    這個參數表示訓練神經網絡迭代的最大次數,值為正整數。
  • momentum 
    這個參數表示在新的計算中要保留的前面的權重數量,值為真分數,通常設為0.9。
  • weight_decay 
    這個參數表示對較大權重的懲罰(正則化)因子。值為真分數。 
    This parameter indicates the factor of (regularization) penalization of large weights. This value is a often a real fraction.
  • solver_mode 
    這個參數用來表示求解神經網絡的模式——值為CPU or GPU。
  • snapshot 
    這個參數用來表示每迭代多少次就應該保存snapshot的modelsolverstate,值為正整數。
  • snapshot_prefix: 
    這個參數用來表示保存snapshot時modelsolverstate的前綴,值為帶引號的字符串。
  • net: 
    這個參數表示訓練網絡所在的位置,值為帶引號的字符串。
  • test_iter 
    這個參數表示 
    這個參數表示每個test_interval進行多少次test迭代,值為正整數。
  • test_interval 
    這個參數表示什么時候進行數據的測試,值為正整數。
  • display 
    這個參數用來表示什么時候將輸出結果打印到屏幕上,值為正整數,表示迭代次數。
  • type 
    這個參數表示訓練神經網絡采用的反向傳播算法,值為帶引號的字符串。可選的值有: 
    Stochastic Gradient Descent “SGD”——隨機梯度下降,默認值。 
    AdaDelta “AdaDelta”——一種”魯棒的學習率方法“,是基於梯度的優化方法。 
    Adaptive Gradient “AdaGrad”——自適應梯度方法。 
    Adam “Adam”——一種基於梯度的優化方法。 
    Nesterov’s Accelerated Gradient “Nesterov”——Nesterov的加速梯度法,作為凸優化中最理想的方法,其收斂速度非常快。 
    RMSprop “RMSProp”——一種基於梯度的優化方法。

2. Demo

  • lr_policy
# lr_policy為multisetp base_lr: 0.01 momentum: 0.9 lr_policy: "multistep" gamma: 0.9 stepvalue: 1000 stepvalue: 2000 stepvalue: 3000 stepvalue: 4000 stepvalue: 5000 # lr_policy為step base_lr: 0.01 momentum: 0.9 lr_policy: "step" gamma: 0.9 stepsize: 1000

 

  • solver.prototxt
net: "models/bvlc_alexnet/train_val.prototxt" # 每次測試時進行1000次迭代 test_iter: 1000 # 每進行1000次訓練執行一次測試 test_interval: 1000 base_lr: 0.01 lr_policy: "step" gamma: 0.1 stepsize: 100000 display: 20 max_iter: 450000 momentum: 0.9 weight_decay: 0.0005 snapshot: 10000 snapshot_prefix: "models/bvlc_alexnet/caffe_alexnet_train" solver_mode: GPU

 

參考資料

  1. http://www.cnblogs.com/denny402/p/5074049.html
  2. https://github.com/BVLC/caffe/wiki/Solver-Prototxt
  3. http://stackoverflow.com/questions/30033096/what-is-lr-policy-in-caffe


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM