Caffe之solver.prototxt文件參數設置

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是均勻等間隔變化,而multistep則是根據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

本文轉載自https://www.cnblogs.com/hust-yingjie/p/6552744.html

發佈了22 篇原創文章 · 獲贊 40 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章