根据docs,如果jac
是一个布尔和True
,那么目标
假定函数fun
返回(f, grad)
,即目标值
还有梯度。这有助于避免重复计算
目标和梯度中出现的术语
现在我想知道是否有类似的选择或方法来实现
对于hessian hess
也一样,这样目标函数可以返回
元组(f, grad, hess)
,其中hess
是hessian矩阵
这里有一个MWE:
import numpy as np
from scipy.optimize import minimize
def obj_and_grad_and_hess(x):
obj = np.exp(x) * x**2
grad = obj + 2*np.exp(x)*x
hess = obj + 4*np.exp(x)*(x) + 2*np.exp(x)
return obj, grad, hess
# res = minimize(obj_and_grad_and_hess, x0=[1.0], jac=True, hess=True)
这个问题是 类似于this question,其中 雅可比函数可以返回雅可比矩阵和海森矩阵
在引擎盖下,scipy.optimize.minimize使用^{}
修饰程序来处理
jac=True
情况。每次调用函数时,decorator都会缓存函数的返回值f
和grad
。通过从此类继承,您可以以同样的方式实现MemoizeJacHess
装饰器:但是,由于目前还不支持
hess=True
选项,因此您必须 像这样使用它:相关问题 更多 >
编程相关推荐