2017-02-17 33 views
1

我正在使用SciPy的「最小化」函數來最小化函數。該函數返回最優值以及估計的雅可比矩陣和Hessian矩陣。如下圖所示:使用SciPy最小化的逆Hessian估計

fun: -675.09792378630596 
hess_inv: <8x8 LbfgsInvHessProduct with dtype=float64> 
jac: array([ 6.34713615e-02, 1.15960574e-03, 1.63709046e-03, 2.16914486e-02, -8.02970135e-02, -4.39513315e-02, 
6.69160727e-02, -5.68434189e-05]) 
message: b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH' 
nfev: 684 
nit: 60 
status: 0 
success: True 
x: array([ 9.93756778e-01, 3.51823214e+00, -2.06368373e-01, 7.37395700e-04, 2.11222756e-02, 3.29367564e-02, 1.22886906e-01, -2.75434386e-01]) 

我想估計黑森州,但是當我有它返回hess_inv,我得到的返回是

<8x8 LbfgsInvHessProduct with dtype=float64> 

而非maxtrix本身。我如何讓它返回矩陣?

回答

0

來自SciPy documentation for the LbfgsInvHessProduct;您可以使用方法todense()以獲取LbfgsInvHessProduct的值作爲密集數組。

但是請記住,LbfgsInvHessProduct仍然是一個矩陣!這是一種特殊的內存優化格式,但您仍然可以調用其他矩陣函數,如matmat(),transpose(),dot()等。