问题:设置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参数
解决:参考下面设置
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))))