caffe之solver.prototxt文件參數設置

caffe solver參數意義與設置

batchsize:每迭代一次,網絡訓練圖片的數量,例如:若是你的batchsize=256,則你的網絡每迭代一次,訓練256張圖片;則,若是你的總圖片張數爲1280000張,則要想將你全部的圖片經過網絡訓練一次,則須要1280000/256=5000次迭代。html

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這個參數進行設置;spa

lr_policy學習率的調整策略:.net

  • - 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表示上一次梯度更新的權重;htm

weight_decay:表示權重衰減,用於防止過擬合;blog

 

總結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

相關文章
相關標籤/搜索