Caffe学习(6)——solver及其配置
来源:互联网 发布:苏州固锝 知乎 编辑:程序博客网 时间:2024/06/05 07:37
在前面的文章Caffe学习(1)中,我们已经介绍了solver的具体流程。它的主要作用是交替调用forward和backward算法来更新参数,来最小化loss,实际上就是一种迭代的优化算法。
下面介绍caffe中求解最有参数的优化算法。
- Stochastic Gradient Descent(type:“SGD”)
- AdaDelta(type:"AdaDelta")
- Adaptive Gradient (type: "AdaGrad")
- Adam (type:"Adam")
- Nesterov's Accelerated Gradient (type:"Nesterov")
- RMSprop (type:"RMSProp")
Nesterov's Accelerated Gradient和AdaDelta是SGD(即随机梯度下降法)的改进,Nesterov着重解决目标函数图像崎岖问题,AdaDelta主要解决学习率更新的问题;而Adam是这两种方法的综合。
优化算法的选择通过solver配置文件中的type进行设置。
下面通过一个例子进行介绍:
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
test_iter——执行完一次的全部数据,称之为一个epoch;
test_interval——测试间隔;没训练500次,进行一次测试。
base_lr: 0.01
lr_policy: "inv"
gamma: 0.0001
power: 0.75
——用于学习率的设置。只要是梯度下降法来求解优化,都会有一个学习率,也就是步长。base_lr用来设置基础学习率,在迭代的过程中,可以对基础学习率进行调整,就是调整策略,由lr_policy来设置。
lr_policy可选参数:
- fixed:保持base_lr不变;
- step:如果设置step,还需另外设置stepsize,返回base_lr*gamma^(floor(iter/stepsize)),其中iter表示迭代次数;
- exp: 返回base_lr*gamma^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*(step-stepsize))))
weight_decay——权重衰减项,防止过拟合的一个参数
display——每训练多少次,在屏幕上显示一次;如果值为0,则不显示
max_iter——最大迭代次数;这个数不能设置太小,否则会导致没有收敛,精确度会很低,也不能设置太大,否则会导致震荡,浪费时间。
snapshot——快照,在训练多少次之后,将训练出来的model和solver进行保存,默认为0时不保存;
snapshot_prefix——设置保存路径
snapshot_diff——是否保存梯度值,默认为false,不保存;
snapshot_format——保存类型:HDF5和BINARYPROTO,默认为后者;
solver_mode——设置运行模式,CPU/GPU
这些参数都是可选参数,都有默认值,如果默认值不符合要求,需要自行设置。
- Caffe学习(6)——solver及其配置
- caffe——solver及其配置
- 【caffe】Caffe学习系列:solver及其配置
- Caffe学习系列(7):solver及其配置
- Caffe学习系列(7):solver及其配置
- Caffe学习系列(7):solver及其配置
- Caffe学习系列(7):solver及其配置
- Caffe学习系列(7):solver及其配置
- Caffe学习系列(7):solver及其配置
- Caffe学习系列(7):solver及其配置
- Caffe学习系列(7):solver及其配置
- Caffe学习系列(7):solver及其配置
- caffe学习笔记7:solver及其配置
- Caffe: solver及其配置
- caffe solver及其配置
- Caffe:solver及其配置
- caffe solver及其配置
- Caffe傻瓜系列(6):solver及其配置
- 手把手 | 30行JavaScript代码,教你分分钟创建神经网络
- express+mysql连接池
- hdu1754 I Hate It(线段树单点修改,区间最值)
- C++学习笔记17
- 边缘计算实验平台的思考
- Caffe学习(6)——solver及其配置
- C++操作SQLite数据库
- Cypher语言
- 203. Remove Linked List Elements
- HGDB默认支持xml数据类型;Postgresql如若使用xml需在编译时指定
- Struts2配置
- 第三方微博
- struts2标签详解
- poll方法(select多路监控原理与实现)