#往往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
【Caffe C++】slover配置文件說明
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.