最近调用scipy.minimize函数时,用L-BFGS算法,但是遇到了如下报错
ABNORMAL_TERMINATION_IN_LNSRCH
看提醒知道可能原因是输入的gradient函数有误。再检查了几遍后,总算找到原因。
目标是 max g(x),g(x)的梯度是 h(x)
在输入到scipy.minimize中自己记得把目标函数改成了 -g(x),但忘记把梯度也乘以-1
另外,scipy中有可以检查梯度形式是否正确的函数scipy.optimize.check_grad
参考:
https://github.com/scipy/scipy/issues/3775