我正在使用scipy.optimize.minimize
withmethod='bfgs'
来训练凸目标。
每次我运行最小化时,BFGS 优化器对我的目标函数所做的前两个调用总是具有相同的参数向量。这似乎没有必要,因为它浪费了好几分钟重新计算两次相同的东西。
最小工作示例(目标更简单);
from scipy.optimize import minimize
def obj_jac(x):
"""Return objective value and jacobian value wrt. x"""
print(x)
return 10*x**2, 20*x
minimize(obj_jac, -100, method='bfgs', jac=True, tol=1e-7)
输出;
[-100.]
[-100.]
[-98.99]
[-94.95]
[-78.79]
[-30.17904355]
[-3.55271368e-15]
有谁知道这是否是 scipy 中 BFGS 实现的预期行为?
更新:我已将此作为Scipy 项目的issue #10385提交。