#往往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配置文件说明
最新推荐文章于 2022-10-21 11:40:20 发布