caffe solver.prototxt引數註釋
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是均勻等間隔變化,而multstep則是根據stepvalue值變化
- poly: 學習率進行多項式誤差, 返回 base_lr (1 - iter/max_iter) ^ (power)
- sigmoid: 學習率進行sigmod衰減,返回 base_lr ( 1/(1 + exp(-gamma * (iter - stepsize))))
momentum:表示上一次梯度更新的權重;
weight_decay:表示權重衰減,用於防止過擬合;
iteration: 資料進行一次前向-後向的訓練
引數舉例: 假如有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的衰減係數。