【Caffe C++】slover配置文件說明

#往往loss function是非凸的,沒有解析解,我們需要通過優化方法來求解。
#caffe提供了六種優化算法來求解最優函數,在solver配置文件中,通過設置type類型來選擇

    1.stochastic Gradient Descent(type:"SGD"),
    2.AdaDelta(type:"AdaDelta"),
    3.Adaptive Gradient(type:"AdaGrad"),
    4.Adam(type:"Adam"),
    5.Nesterov's Accelerated Gradient (type:"Nesterov") and 
    6.RMSprop (type:"RMSProp")

net:"examples/mnist/lenet_train_test.prototxt"	
test_iter:100
test_interval: 500
base_lr: 0.01
momentum: 0.9
type:SGD		#一般都選用SGD
weight_decay: 0.0005
lr_policy: "inv"
gamma: 0.0001
power: 0.75
display: 100
max_iter:20000
snapshot:5000
snapshot_prefix:"examples/mnist/lenet"
solve_mode:CPU


#參數解析

net:"examples/mnist/lenet_train_test.prototxt"  #網絡位置
#也可以分別設置train和test,一般不分別設置
    train_net:"examples/hdf5_classification/logreg_auto_train.prototxt"  
    test_net:"examples/hdf5_classification/logreg_auto_test.prototxt"

test_iter:100 		 #迭代了多少個樣本呢?batch*test_iter 假設有5000個測試樣本,一次測試想跑遍5000個則需要設置test_iter×batch=5000

test_interval:500 	#測試間隔。也就是每訓練500次,才進行一次測試。

base_lr:0.01 		#base_lr用於設置基礎學習率

lr_policy:"inv"  	#學習率調整的策略,大多是都用這個

lr_policy:"inv"  #學習率調整策略

        -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:學習率進行sigmoid衰減,返回base_lr(1/(1+exp(-gamma*(iter-stepsize))))

momentum:0.9 #動量 ,用於提高優化速度,相當於力的合成,基本永遠都是0.9

display:100 #每訓練100次,在屏幕上顯示一次,如果設置爲0則爲不顯示

max_iter:20000 #最大迭代次數,2w次就停止了,設置的數可以大一點

sanpshot:5000 #快照 將訓練出來的model和slover狀態進行保存,snapshot用於設置訓練多少次後進行保存

solver_mode:CPU  #設置運行模式 默認爲GPU,沒有GPU則需要設置爲cpu


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章