caffe solver參數意義與設置
batchsize:每迭代一次,網絡訓練圖片的數量,例如:如果你的batchsize=256,則你的網絡每迭代一次,訓練256張圖片;則,如果你的總圖片張數為1280000張,則要想將你所有的圖片通過網絡訓練一次,則需要1280000/256=5000次迭代。
epoch:表示將所有圖片在你的網絡中訓練一次所需要的迭代次數,如上面的例子:5000次;我們稱之為 一代。所以如果你想要你的網絡訓練100代時,則你的總的迭代次數為max_iteration=5000*100=500000次;
max_iteration:網絡的最大迭代次數如上面的500000次;同理,如果max_iteration=450000,則該網絡被訓練450000/5000=90代。
test_iter:表示測試的次數;比如,你的test階段的batchsize=100,而你的測試數據為10000張圖片,則你的測試次數為10000/100=100次;即,你的test_iter=100;
test_interval:表示你的網絡迭代多少次才進行一次測試,你可以設置為網絡訓練完一代,就進行一次測試,比如前面的一代為5000次迭代時,你就可以設置test_interval=5000;
base_lr:表示基礎學習率,在參數梯度下降優化的過程中,學習率會有所調整,而調整的策略就可通過lr_policy這個參數進行設置;
lr_policy:學習率的調整策略:
- - fixed: 保持base_lr不變.
- - step: 如果設置為step,則還需要設置一個stepsize, 返回 base_lr * gamma ^ (floor(iter / stepsize)),其中iter 表示當前的迭代次數
- - exp: 返回base_lr * gamma ^ iter, iter為當前迭代次數
- - inv: 如果設置為inv,還需要設置一個power, 返回base_lr * (1 + gamma * iter) ^ (- power)
- - multistep: 如果設置為multistep,則還需要設置一個stepvalue。這個參數和step很相似,step是均勻等間隔變化,而mult-
- step則是根據stepvalue值變化
- - poly: 學習率進行多項式誤差, 返回 base_lr (1 - iter/max_iter) ^ (power)
- - sigmoid: 學習率進行sigmod衰減,返回 base_lr ( 1/(1 + exp(-gamma * (iter - stepsize))))
momentum:表示上一次梯度更新的權重;
weight_decay:表示權重衰減,用於防止過擬合;
總結solver文件個參數的意義
iteration: 數據進行一次前向-后向的訓練
batchsize:每次迭代訓練圖片的數量
epoch:1個epoch就是將所有的訓練圖像全部通過網絡訓練一次
例如:假如有1280000張圖片,batchsize=256,則1個epoch需要1280000/256=5000次iteration
它的max-iteration=450000,則共有450000/5000=90個epoch
而lr什么時候衰減與stepsize有關,減少多少與gamma有關,即:若stepsize=500, base_lr=0.01, gamma=0.1,則當迭代到第一個500次時,lr第一次衰減,衰減后的lr=lr*gamma=0.01*0.1=0.001,以后重復該過程,所以
stepsize是lr的衰減步長,gamma是lr的衰減系數。
也可參考一下博客:
http://blog.csdn.net/czp0322/article/details/52161759
http://www.cnblogs.com/Allen-rg/p/5795867.html
http://www.cnblogs.com/CarryPotMan/p/5343692.html
http://blog.csdn.net/qq_18515405/article/details/51821125