本文简要介绍 python 语言中 scipy.optimize.fmin_bfgs
的用法。
用法:
scipy.optimize.fmin_bfgs(f, x0, fprime=None, args=(), gtol=1e-05, norm=inf, epsilon=1.4901161193847656e-08, maxiter=None, full_output=0, disp=1, retall=0, callback=None, xrtol=0, c1=0.0001, c2=0.9, hess_inv0=None)#
使用 BFGS 算法最小化函数。
- f: 可调用
f(x,*args)
要最小化的目标函数。
- x0: ndarray
初始猜测,形状 (n,)
- fprime: 可调用
f'(x,*args)
,可选 f的梯度。
- args: 元组,可选
传递给 f 和 fprime 的额外参数。
- gtol: 浮点数,可选
如果梯度范数小于 gtol,则成功终止
- norm: 浮点数,可选
范数阶(Inf 为最大值,-Inf 为最小值)
- epsilon: int 或 ndarray,可选
如果 fprime 是近似值,则使用此值作为步长。
- callback: 可调用的,可选的
每次迭代后调用的可选用户提供的函数。称为
callback(xk)
,其中xk
是当前参数向量。- maxiter: 整数,可选
要执行的最大迭代次数。
- full_output: 布尔型,可选
如果为 True,则返回
fopt
、func_calls
、grad_calls
和warnflag
以及xopt
。- disp: 布尔型,可选
如果为 True,则打印收敛消息。
- retall: 布尔型,可选
如果为真,则在每次迭代时返回结果列表。
- xrtol: 浮点数,默认值:0
相对耐受性x。如果步长小于则成功终止
xk * xrtol
其中xk
是当前参数向量。- c1: 浮点数,默认:1e-4
Armijo 条件规则的参数。
- c2: 浮点数,默认:0.9
曲率条件规则的参数。
- hess_inv0: 无或 ndarray,可选``
初始逆 Hessian 估计,形状 (n, n)。如果无(默认),则使用单位矩阵。
- f: 可调用
- xopt: ndarray
最小化 f 的参数,即
f(xopt) == fopt
。- fopt: 浮点数
最小值。
- gopt: ndarray
最小梯度值 f'(xopt),应接近 0。
- Bopt: ndarray
1/f''(xopt) 的值,即 Hessian 逆矩阵。
- func_calls: int
function_calls 的数量。
- grad_calls: int
进行的梯度调用次数。
- warnflag: 整数
1:超出最大迭代次数。 2:梯度和/或函数调用不变。 3:遇到NaN结果。
- allvecs: 列表
每次迭代时 xopt 的值。只有当retall 为True 时才返回。
参数 ::
返回 ::
注意:
使用 Broyden、Fletcher、Goldfarb 和 Shanno (BFGS) 的 quasi-Newton 方法优化函数 f,其梯度由 fprime 给出。
参数c1和c2必须满足
0 < c1 < c2 < 1
.参考:
Wright 和 Nocedal “数值优化”,1999,p。 198.
例子:
>>> import numpy as np >>> from scipy.optimize import fmin_bfgs >>> def quadratic_cost(x, Q): ... return x @ Q @ x ... >>> x0 = np.array([-3, -4]) >>> cost_weight = np.diag([1., 10.]) >>> # Note that a trailing comma is necessary for a tuple with single element >>> fmin_bfgs(quadratic_cost, x0, args=(cost_weight,)) Optimization terminated successfully. Current function value: 0.000000 Iterations: 7 # may vary Function evaluations: 24 # may vary Gradient evaluations: 8 # may vary array([ 2.85169950e-06, -4.61820139e-07])
>>> def quadratic_cost_grad(x, Q): ... return 2 * Q @ x ... >>> fmin_bfgs(quadratic_cost, x0, quadratic_cost_grad, args=(cost_weight,)) Optimization terminated successfully. Current function value: 0.000000 Iterations: 7 Function evaluations: 8 Gradient evaluations: 8 array([ 2.85916637e-06, -4.54371951e-07])
相关用法
- Python SciPy optimize.fmin_cobyla用法及代码示例
- Python SciPy optimize.fmin_slsqp用法及代码示例
- Python SciPy optimize.fmin_tnc用法及代码示例
- Python SciPy optimize.fmin_cg用法及代码示例
- Python SciPy optimize.fmin_powell用法及代码示例
- Python SciPy optimize.fmin用法及代码示例
- Python SciPy optimize.fminbound用法及代码示例
- Python SciPy optimize.fsolve用法及代码示例
- Python SciPy optimize.fixed_point用法及代码示例
- Python SciPy optimize.rosen_der用法及代码示例
- Python SciPy optimize.line_search用法及代码示例
- Python SciPy optimize.rosen用法及代码示例
- Python SciPy optimize.shgo用法及代码示例
- Python SciPy optimize.minimize_scalar用法及代码示例
- Python SciPy optimize.root用法及代码示例
- Python SciPy optimize.NonlinearConstraint用法及代码示例
- Python SciPy optimize.KrylovJacobian用法及代码示例
- Python SciPy optimize.toms748用法及代码示例
- Python SciPy optimize.linprog_verbose_callback用法及代码示例
- Python SciPy optimize.bracket用法及代码示例
- Python SciPy optimize.milp用法及代码示例
- Python SciPy optimize.diagbroyden用法及代码示例
- Python SciPy optimize.bisect用法及代码示例
- Python SciPy optimize.isotonic_regression用法及代码示例
- Python SciPy optimize.golden用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.optimize.fmin_bfgs。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。