1. 程式人生 > >引數意義及設定

引數意義及設定

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的衰減係數。