利用SciPy最小化估计逆Hessian

时间:2017-02-17 03:15:03

标签: python numpy optimization scipy

我正在使用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])

我想要估计的Hessian,但是当我有它返回hess_inv时,我得到的只是

<8x8 LbfgsInvHessProduct with dtype=float64>

而不是maxtrix本身。我怎么让它返回矩阵?

1 个答案:

答案 0 :(得分:1)

来自SciPy documentation for the LbfgsInvHessProduct;您可以使用 todense()方法将LbfgsInvHessProduct的值作为密集数组获取。

但是,请记住LbfgsInvHessProduct仍然是一个矩阵!它是一种特殊的内存优化格式,但你仍然可以调用其他矩阵函数,如matmat(),transpose(),dot()等。