如何生成Solver配置文件---caffe
来源:互联网 发布:手机淘宝悬浮红包设置 编辑:程序博客网 时间:2024/05/16 12:50
solver是caffe的核心,也被称为优化器,在DeepLearning中通常是没有解析解的,我们只能通过优化的方案来求解,solver的主要作用就是交替调用前向传播和后向传播算法来交替更新参数。
solver的流程:
1. 设计好优化的对象---编写train.prototxt文件
2. 通过forward来计算最终的输出值,以及对应的loss
3. 通过backward计算每一层的梯度
4. 根据选用的solver算法来利用梯度进行更新
5. 定期的评价测试训练的网络
6. 记录并保存每一次迭代的学习率,快照,以及对应的状态
学习率的设置。只要是梯度下降法来求解优化,都会有一个学习率,也叫步长。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))))
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
- 如何生成Solver配置文件---caffe
- caffe中solver配置文件的解读
- Caffe--solver.prototxt配置文件 参数设置及含义
- 【caffe】caffe的python接口学习:生成solver文件
- Caffe Solver
- caffe的python接口学习(2):生成solver文件
- caffe的python接口学习(2):生成solver文件
- caffe的python接口学习(2):生成solver文件
- 【用Python学习Caffe】5. 生成solver文件
- [caffe的python接口学习三]:生成solver文件
- caffe的python接口学习(2):生成solver文件
- caffe solver.prototxt文件
- Caffe学习:Solver
- Caffe的Solver参数设置
- Caffe: solver及其配置
- Caffe学习3-Solver
- Caffe学习:Solver
- caffe solver解释
- 如何利用离散Hopfield神经网络进行高校科研能力评价(2)
- android(1):android studio启动提示:please install a 64-bit JDK
- sort 根据实体类中指定的列名对List中的对象进行排序
- 随笔之java笔试一
- iOS经常用到的开源库和第三方组件
- 如何生成Solver配置文件---caffe
- 数据结构实验之查找五:平方之哈希表
- spark 源码学习之打印线程堆栈
- 欢迎使用CSDN-markdown编辑器
- 贴片电阻分类、阻值、功率、封装、尺寸
- 第十六周--项目1-验证算法(6)堆排序
- 损失函数与梯度提升树
- Java - How to create new Entry (key, value)
- poj1149 PIGS