我正在使用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本身。我怎么让它返回矩阵?
答案 0 :(得分:1)
来自SciPy documentation for the LbfgsInvHessProduct;您可以使用 todense()方法将LbfgsInvHessProduct的值作为密集数组获取。
但是,请记住LbfgsInvHessProduct仍然是一个矩阵!它是一种特殊的内存优化格式,但你仍然可以调用其他矩阵函数,如matmat(),transpose(),dot()等。