caffe prototxt 参数介绍,及Learning rate 衰减

学习率变化有以下几种常见策略:

base_lr是基础学习率,这里设置为0.1。

1)“step” - 需要设置一个stepsize参数,返回base_lr * gamma ^ ( floor ( iter / stepsize ) ),iter为当前迭代次数,gamma设置为0.4,stepsize设置100;

2)“multistep”  和step相近,但是需要stepvalue参数,step是均匀等间隔变化,而multistep是根据stepvalue的值进行变化; 

a.可以设置多个 stepvalue的值, 在prototxt里面也没有具体介绍, 它由参数 stepsize 与 stepvalue 决定; 

b.它不是每时第刻都去计算 学习率,而是达到我们设定的stepvalue的时候,才去计算(根据方法2中的公式),然后更新学习率; 

c.stepvalue 可以设置多个的

 

3)“fixed” - 保持base_lr不变;

4)“exp” - 返回base_lr * gamma ^ iter, iter为当前迭代次数,gamma设置为0.98;

 

5)“poly” - 学习率进行多项式误差衰减,返回 base_lr* ( 1 - iter / max_iter ) ^ ( power ),power设置为0.9;

6)“sigmoid” - 学习率进行sigmod函数衰减,返回 base_lr ( 1/ 1+exp ( gamma * ( iter - stepsize ) ) ),gamma设置为0.05,stepsize设置为200;

 

 

7) 

inv : 其中参数 gamma 与 power 都需要设置;

学习率  = base_lr * (1 + gamma * iter) ^ (- power)

 

 

 

solver.prototxt文件是用来告诉caffe如何训练网络的。solver.prototxt的各个参数的解释如下:

  • base_lr
    这个参数是用来表示网络的初始学习率的。这个值是一个浮点型实数。
  • lr_policy
    这个参数是用来表示学习率随着时间是如何变化的。值是字符串,需要加""。学习率变化的可选参数有:
    “step”——需要设置stepsize。根据gamma参数和stepsize参数来降低学习率,base_lr * gamma ^ (floor(iter / stepsize))iter是当前迭代次数。学习率每迭代stepsize次变化一次。
    “multistep”——与step类似,需要设置stepvalue,学习率根据stepvalue进行变化。
    “fixed”——学习率base_lr保持不变。
    “inv”——学习率变化公式为base_lr * (1 + gamma * iter) ^ (- power)
    “exp”——学习率变化公式为base_lr * gamma ^ iter}
    “poly”——学习率以多项式形式衰减,到最大迭代次数时降为0。学习率变化公式为base_lr * (1 - iter/max_iter) ^ (power)
    “sigmoid”——学习率以S型曲线形式衰减,学习率变化公式为base_lr * (1 / (1 + exp(-gamma * (iter - stepsize))))
  • gamma
    这个参数表示学习率每次的变化程度,值为实数。
  • stepsize
    这个参数表示什么时候应该进行训练的下一过程,值为正整数。主要用在lr_policystep的情况。
  • stepvalue
    这个参数表示什么时候应该进行训练的下一过程,值为正整数。主要用在lr_policymultistep的情况。
  • max_iter
    这个参数表示训练神经网络迭代的最大次数,值为正整数。
  • momentum
    这个参数表示在新的计算中要保留的前面的权重数量,值为真分数,通常设为0.9。
  • weight_decay
    这个参数表示对较大权重的惩罚(正则化)因子。值为真分数。
    This parameter indicates the factor of (regularization) penalization of large weights. This value is a often a real fraction.
  • solver_mode
    这个参数用来表示求解神经网络的模式——值为CPU or GPU。
  • snapshot
    这个参数用来表示每迭代多少次就应该保存snapshot的modelsolverstate,值为正整数。
  • snapshot_prefix:
    这个参数用来表示保存snapshot时modelsolverstate的前缀,值为带引号的字符串。
  • net:
    这个参数表示训练网络所在的位置,值为带引号的字符串。
  • test_iter
    这个参数表示
    这个参数表示每个test_interval进行多少次test迭代,值为正整数。
  • test_interval
    这个参数表示什么时候进行数据的测试,值为正整数。
  • test_initialization: true/false 是否进行第一次测试
  • display
    这个参数用来表示什么时候将输出结果打印到屏幕上,值为正整数,表示迭代次数。
  • type
    这个参数表示训练神经网络采用的反向传播算法,值为带引号的字符串。可选的值有:
    Stochastic Gradient Descent “SGD”——随机梯度下降,默认值。
    AdaDelta “AdaDelta”——一种”鲁棒的学习率方法“,是基于梯度的优化方法。
    Adaptive Gradient “AdaGrad”——自适应梯度方法。
    Adam “Adam”——一种基于梯度的优化方法。
    Nesterov’s Accelerated Gradient “Nesterov”——Nesterov的加速梯度法,作为凸优化中最理想的方法,其收敛速度非常快。
    RMSprop “RMSProp”——一种基于梯度的优化方法。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NineDays66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值