Har*_*rma 9 python scipy scikit-learn
scipy.optimize.minimze接受obj并jac充当输入.我相信它会在需要时单独调用它们.但是,我们经常遇到目标函数,其梯度计算与目标函数共享大量计算.所以,我非常希望来计算obj,并grad同时进行.但这个图书馆的情况似乎并非如此?如果一个人仍然想要使用它,那么处理它的方法scipy.optimize.minimze是什么?
ev-*_*-br 14
你完全可以.只需使用jac=True:
In [1]: import numpy as np
In [2]: from scipy.optimize import minimize
In [3]: def f_and_grad(x):
...: return x**2, 2*x
...:
In [4]: minimize(f_and_grad, [1], jac=True)
Out[4]:
fun: 1.8367099231598242e-40
hess_inv: array([[ 0.5]])
jac: array([ 2.71050543e-20])
message: 'Optimization terminated successfully.'
nfev: 4
nit: 2
njev: 4
status: 0
success: True
x: array([ 1.35525272e-20])
Run Code Online (Sandbox Code Playgroud)
它实际上记录在案:
jac:bool或callable,可选雅可比(渐变)的目标函数.仅适用于CG,BFGS,Newton-CG,L-BFGS-B,TNC,SLSQP,dogleg,trust-ncg.如果jac是布尔值并且为True,则假定fun会返回梯度以及目标函数.如果为False,将以数字方式估计梯度.jac也可以是一个可调用的,返回目标的梯度.在这种情况下,它必须接受与fun相同的参数.
(强调我的)
| 归档时间: |
|
| 查看次数: |
3586 次 |
| 最近记录: |