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

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

如何写solver文件:

from caffe.proto import caffe_pb2s = 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 0
原创粉丝点击