问题:设置solver.prototxt时,lr_policy:"step",运行时出现下面问题

*** Aborted at 1479432790 (unix time) try "date -d @1479432790" if you are using GNU date ***
PC: @     0x7fe47645db63 caffe::SGDSolver<>::GetLearningRate()
*** SIGFPE (@0x7fe47645db63) received by PID 13998 (TID 0x7fe476dca780) from PID 1984289635; stack trace: ***
    @     0x7fe47582c2f0 (unknown)
    @     0x7fe47645db63 caffe::SGDSolver<>::GetLearningRate()
    @     0x7fe47645dd72 caffe::SGDSolver<>::ApplyUpdate()
    @     0x7fe47646949f caffe::Solver<>::Step()
    @     0x7fe47646981f caffe::Solver<>::Solve()
    @           0x407471 train()
    @           0x404bcb main
    @     0x7fe475817a40 (unknown)
    @           0x405219 _start
    @                0x0 (unknown)
Floating point exception (core dumped)

原因:未设置stepsize参数

解决:参考下面设置http://www.cnblogs.com/denny402/p/5074049.html

lr_policy可以设置为下面这些值,相应的学习率的计算为:

- fixed:   保持base_lr不变.
- step:    如果设置为step,则还需要设置一个stepsize,  返回 base_lr * gamma ^ (floor(iter / stepsize)),其中iter表示当前的迭代次数
- exp:     返回base_lr * gamma ^ iter, 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: 学习率进行sigmod衰减,返回 base_lr ( 1/(1 + exp(-gamma * (iter - stepsize))))