【发布时间】:2021-10-07 00:15:43
【问题描述】:
根据docs,如果jac是一个布尔值并且True,那么目标
假设函数fun返回(f, grad),即目标值
和梯度。这对于避免重复计算很有用
目标和梯度中出现的术语。
现在我想知道是否有类似的选项或方法可以实现
对于粗麻布 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,其中 jacobian 函数可以返回 jacobian 和 hessian。
【问题讨论】:
-
我不明白你为什么要问这个。您从字面上链接到最小化的当前文档,其中显示了该函数支持的所有选项。缺少您所要求的内容是显而易见的(您对提高性能的假设也可能是错误的,因为大多数算法不需要在每个搜索步骤重新计算 Hessian)
-
我知道缺少此选项。这就是为什么我问是否有另一种方法来实现它。恕我直言,我认为您对性能的陈述是错误的。
-
如果您不相信文档是完整的,您可以阅读
[source]来测试它。
标签: python scipy scipy-optimize scipy-optimize-minimize