本文簡要介紹 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。