免责声明:我知道我不能指望在没有显示简洁且简单的可重复样本的情况下完全解决问题,但我希望即使没有,我也会得到一些指示。
我的代码格式为
from scipy import optimize
x, foo, result = optimize.fmin_l_bfgs_b(myFunc, x0, approx_grad=True,
bounds=someBounds)
从the documentation我得到第二个输出
f: float - func的值至少为。
在这里,我得到了
>> print foo
nan
但是如果我尝试使用fmin_l_bfgs_b
给我的最小值来恢复该函数值,我会得到
>> myFunc(x)
20520.965701409703
这是result
:
{'warnflag': 2, 'task': 'ABNORMAL_TERMINATION_IN_LNSRCH', 'grad': array([ 1.27146321e+12, 5.25635627e+11, 8.94617519e+11,
2.90637658e+12, 1.16159650e+12]), 'nit': 5, 'funcalls': 490}
如果最小化器声称它是NaN
,我怎么可能得到数字最小值?
答案 0 :(得分:1)
之前我遇到过类似的问题,如果x0
类型为float32
,我发现无法达到收敛。将它投射到np.float64
之后,它就像一个魅力。
这可能不是解决问题的方法,但我认为值得一试。
答案 1 :(得分:0)
返回的Pinterest
值不为0.最小化器告诉您优化没有收敛,see documentation。在假设找到最小值之前,您应该检查返回状态。