caffe中solver.prototx 中的参数

来源:互联网 发布:网络爬虫好学么 编辑:程序博客网 时间:2024/05/17 02:45
(一)例子一:lenet
net: "examples/mnist/lenet_train_test.prototxt"test_iter: 100test_interval: 500base_lr: 0.01momentum: 0.9type: SGDweight_decay: 0.0005lr_policy: "inv"gamma: 0.0001power: 0.75display: 100max_iter: 20000snapshot: 5000snapshot_prefix: "examples/mnist/lenet"

solver_mode: CPU

1、test_iter:test_layer中的batch_size*test_iter=test数据的总数,执行完一次全部数据,称之为一个epoch

2、test_interval:每训练500次执行一次测试。test_interval*train_layer中的batch_size=train数据的总数的整数倍。

3、learning rate:学习率设置

base_lr: 0.01
lr_policy: "inv"
gamma: 0.0001
power: 0.75
其中学习率的方案有以下几种:

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是均匀等间隔变化,而multistep则是根据                                 stepvalue值变化
    • - poly:     学习率进行多项式误差, 返回 base_lr (1 - iter/max_iter) ^ (power)
    • - sigmoid: 学习率进行sigmod衰减,返回 base_lr ( 1/(1 + exp(-gamma * (iter - stepsize))))
4、动量参数:momentum :0.9
5、display: 100 每训练100次,在屏幕上显示一次
6、max_iter: 20000
7、snapshot: 5000 每间隔5000次训练保存一次模型和训练断点。
(二)例子二:本例子中训练数据为2700张,测试数据为1638张test/train layer的batch_size都是1,一个epoch对应训练2700轮
test_iter: 1638训练数据总数=1638(test_iter)*1(batch_size)test_interval: 5400相当于训练数据每张滚了两轮,即训练过程经过了2个epoch,测试数据测试一个epoch。base_lr:1e-6momentum: 0.9weight_decay: 0.0005lr_policy: "step"gamma: 0.1stepsize: 1080000display: 2700每个epoch显示一次结果max_iter: 2160000最大迭代次数对应80epochsnapshot: 54000训练过程经过20epoch就保存一次快照snapshot_prefix: "./model/network"solver_mode: GPUdevice_id: 0
(三)总结
step1:通过train_data test_data和batchsize计算epoch
step2:计算test iter
step3:
test_interval=2 epoch
display=1 epoch
snapshot=10/20epoch
max_iter=800epoch
step_size=max_iter的一半

0 0
原创粉丝点击