问题:设置solver.prototxt时,lr_policy:"step",运行时出现下面问题
*** Aborted at (unix time) try "date -d @1479432790" if you are using GNU date ***
PC: @ 0x7fe47645db63 caffe::SGDSolver<>::GetLearningRate()
*** SIGFPE (@0x7fe47645db63) received by PID (TID 0x7fe476dca780) from PID ; 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 * ( + gamma * iter) ^ (- power)
- multistep: 如果设置为multistep,则还需要设置一个stepvalue。这个参数和step很相似,step是均匀等间隔变化,而multistep则是根据 stepvalue值变化
- poly: 学习率进行多项式误差, 返回 base_lr ( - iter/max_iter) ^ (power)
- sigmoid: 学习率进行sigmod衰减,返回 base_lr ( /( + exp(-gamma * (iter - stepsize))))