訓練圖片1075張,測試圖片360
參數設置
net: "./image_train_val.prototxt" test_iter: 271 test_interval: 100 base_lr: 0.01 display: 20 max_iter: 25000 lr_policy: "step" gamma: 0.1 momentum: 0.9 weight_decay: 0.0005 power: 0.75 stepsize: 100 snapshot: 5000 snapshot_prefix: "snapshot" solver_type: SGD solver_mode: GPU
net: 網絡模型(訓練網絡模型、測試網絡模型)
test_iter:表示網絡的測試迭代次數。網絡一次迭代將一個batchSize的圖片進行測試,所以爲了能將validation集中所有圖片都測試一次。這個參數乘以TEST的batchSize應該等於validation集中圖片總數量。即test_iter*batchSize=測試圖片總數。
test_interval:測試間隔,表示網絡迭代(訓練即train)多少次進行一次測試。一次迭代即一個batchSize的圖片通過網絡正向傳播和反向傳播的整個過程。比如這裏設置的是224,即網絡每迭代224次即對網絡的準確率進行一次驗證。一般來說,我們需要將訓練集中所有圖片都跑一遍,再對網絡的準確率進行測試,整個參數乘以網絡data層(TRAIN)中batchSize參數應該等於訓練集中圖片總數量的倍數。即test_interval*batchSize=n*train_num(訓練圖片總數,n爲正整數)。
base_lr:表示網絡的基礎學習率。學習率過高可能導致loss持續86.33333,也可能導致loss無法收斂等等問題。過低的學習率會使網絡收斂慢,也有可能導致梯度損失。一般我們設置爲0.01。
display: 每多少次顯示一次。
max_iter: 網絡的最大迭代次數。訓練集中的圖片當然不能只訓練一次就算了,要反覆多次的進行訓練,所以這個參數應該要大一些。(與snapshot. test_iter. test_interval有關)
lr_policy: 學習率變化規律。
gamma: gamma是lr的衰減係數(學習率變化指數)。一般不改。
momentum: 動量,學習的參數。一般不改。
weight_decay: 權重衰減,學習的參數。一般不改。
stepsize: stepsize是lr的衰減步長(學習率變化頻率),每多少次學習率遞減。這裏是迭代100次學習率遞減。
snapshot: 每多少次保存一次學習的結果。即caffemodel。(snapshot = test_interval * n, snapshot * m = max_iter. m,n均爲正整數)
solver_mode: 設置使用GPU還是CPU進行學習訓練。
solver_type: 優化算法的選擇,一共有六種可選:SGD、AdaDelta、AdaGrad、Adam、Nesterov和RMSProp。默認爲SGD。