Caffe中的“ lr_policy”是什么?
caffe
deep-learning
gradient-descent
machine-learning
6
0

我只是试图找出如何使用Caffe的方法 。为此,我只看了示例文件夹中的不同.prototxt文件。有一种我不明白的选择:

# The learning rate policy
lr_policy: "inv"

可能的值似乎是:

  • "fixed"
  • "inv"
  • "step"
  • "multistep"
  • "stepearly"
  • "poly"

有人可以解释一下这些选择吗?

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

如果您查看/caffe-master/src/caffe/proto/caffe.proto文件(可以在此处在线找到 ),则会看到以下描述:

// The learning rate decay policy. The currently implemented learning rate
// policies are as follows:
//    - fixed: always return base_lr.
//    - step: return base_lr * gamma ^ (floor(iter / step))
//    - exp: return base_lr * gamma ^ iter
//    - inv: return base_lr * (1 + gamma * iter) ^ (- power)
//    - multistep: similar to step but it allows non uniform steps defined by
//      stepvalue
//    - poly: the effective learning rate follows a polynomial decay, to be
//      zero by the max_iter. return base_lr (1 - iter/max_iter) ^ (power)
//    - sigmoid: the effective learning rate follows a sigmod decay
//      return base_lr ( 1/(1 + exp(-gamma * (iter - stepsize))))
//
// where base_lr, max_iter, gamma, step, stepvalue and power are defined
// in the solver parameter protocol buffer, and iter is the current iteration.
收藏
评论

通常的做法是随着优化/学习过程的进行而降低学习率(lr)。但是,尚不清楚应如何根据迭代次数降低学习率。

如果将DIGITS用作Caffe的接口,您将可以直观地看到不同的选择如何影响学习率。

固定的:学习率在整个学习过程中保持固定。


inv:学习率正在下降,约为1/T
在此处输入图片说明


步骤:学习率是分段恒定的,每X次迭代都会下降
在此处输入图片说明


多步:任意间隔的分段常数
在此处输入图片说明


您可以在函数SGDSolver<Dtype>::GetLearningRatesolvers / sgd_solver.cpp第〜30行)中准确了解学习率的计算方式。


最近,我遇到了一种有趣且非常规的学习速率调整方法: Leslie N. Smith的作品“ No More Pesky Learning Rate Guessing Games” 。 Leslie在报告中建议使用lr_policy在减少和增加学习率之间交替。他的工作还建议了如何在Caffe中实施此政策。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号