Caffe的指数学习率衰减是否正确实施?

时间:2018-09-12 13:02:13

标签: caffe

caffe.proto中,指数学习率衰减的解释如下:

exp: return base_lr * gamma ^ iter

相应地,它是implemented

 else if (lr_policy == "exp") {
    CHECK_GE(this->param_.gamma(), 0);
    rate = this->param_.base_lr() * pow(this->param_.gamma(), this->iter_);
  }

但是,实际上,当我使用它时,实际上得到的结果是:

return base_lr * gamma

这是一个示例日志,其中,学习率每6400次迭代就下降一次。如果您做数学运算,您可以清楚地看到,当前的迭代次数(6400)没有考虑在内!

I0205 20:05:37.391410 31809 sgd_solver.cpp:106] Iteration 6360, lr = 0.045

I0205 20:05:55.309510 31809 sgd_solver.cpp:106] Iteration 6400, lr = 0.0432

...

I0205 20:53:43.700938 31809 sgd_solver.cpp:106] Iteration 12800, lr = 0.041472
...
I0205 21:41:31.385784 31809 sgd_solver.cpp:106] Iteration 19200, lr = 0.0398131

I0205 21:41:49.302739 31809 sgd_solver.cpp:106] Iteration 19240, lr = 0.0398131

这也是一个快速测试:Click运行。输出:

the result of lr*gamma**iter =  1.545624406753422e-115                                                                           
initial lr: 0.045                                                                                                                
decaying the lr, (lr*gamma):                                                                                                     
0.043200                                                                                                                         
0.041472                                                                                                                         
0.039813                                                                                                                         
0.038221

我很困惑,为什么不考虑当前的迭代?如果可以,为什么会这样呢?

0 个答案:

没有答案