[Caffe]:关于*** Aborted at 1479432790 (unix time) try "date -d @1479432790" 错误的另一种原因

时间:2021-11-17 23:56:23

问题:设置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))))