如何生成Solver配置文件---caffe

solver是caffe的核心,也被称为优化器,在DeepLearning中通常是没有解析解的,我们只能通过优化的方案来求解,solver的主要作用就是交替调用前向传播和后向传播算法来交替更新参数。
solver的流程:
1. 设计好优化的对象---编写train.prototxt文件
2. 通过forward来计算最终的输出值,以及对应的loss
3. 通过backward计算每一层的梯度
4. 根据选用的solver算法来利用梯度进行更新
5. 定期的评价测试训练的网络
6. 记录并保存每一次迭代的学习率,快照,以及对应的状态

如何写solver文件:

from caffe.proto import caffe_pb2
s = caffe_pb2.SolverParameter()
path='/home/xxx/data/'
solver_file=path+'solver.prototxt'      # solver文件保存位置

s.train_net = path+'train.prototxt'     # 训练配置文件
s.test_net.append(path+'val.prototxt')  # 测试配置文件
s.test_interval = 782                   # 测试间隔
s.test_iter.append(100)                 # 测试迭代次数,结合batch_size来理解
s.max_iter = 78200                      # 最大迭代次数
s.momentum = 0.9                        # momentum系数
s.weight_decay = 5e-4                   # 权值衰减系数

#学习率的设置在下面会详细来讲
s.base_lr = 0.001                       # 基础学习率
s.lr_policy = 'step'                    # 学习率衰减方法
s.stepsize=10000                        # 此值仅对step方法有效
s.gamma = 0.1                           # 学习率衰减指数

s.display = 782                         # 屏幕日志显示间隔,如果为0则不显示
s.snapshot = 7820                       # 保存模型的间隔
s.snapshot_prefix = 'model/snapshot'    # 保存在model文件夹下,文件名以snapshot开头
s.type = “SGD”                          # 优化算法
s.solver_mode = caffe_pb2.SolverParameter.GPU  # 设置计算方式

with open(solver_file, 'w') as f:
    f.write(str(s))

学习率的设置。只要是梯度下降法来求解优化,都会有一个学习率,也叫步长。base_lr用于设置基础学习率,在迭代的过程中,可以对基础学习率根据指定的策略进行调整,由lr_policy来设置。

lr_policy可以设置为下面这些值,相应的学习率的计算为:

- fixed:   
保持base_lr不变.
- step:    
如果设置为step,则还需要设置stepsize和gamma,返回 base_lr*gamma^(floor(iter/stepsize)),其中iter表示当前的迭代次数。
- exp:     
还需要设置gamma,返回base_lr*gamma^iter,iter为当前迭代次数
- inv:      
如果设置为inv,还需要设置power和gamma, 返回base_lr*(1+gamma*iter)^(-power)
- multistep:
s.stepvalue.append(10000)
s.stepvalue.append(20000) 
s.stepvalue.append(30000)  如果设置为multistep,则还需要设置一个stepvalue。这个参数和step很相似,step是均匀等间隔变化,而multistep则是根据stepvalue值变化 
- poly:     
学习率进行多项式误差,返回 base_lr (1 - iter/max_iter) ^ (power)
- sigmoid: 
学习率进行sigmod衰减,返回 base_lr ( 1/(1 + exp(-gamma * (iter - stepsize))))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值