2017-02-17 7 views
1

Я использую функцию минимизации SciPy для минимизации функции. Функция возвращает оптимальное значение вместе с оценкой якобиана и гессиана. Как показано ниже:Оценка обратного гессиана с использованием минимизации SciPy

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() и т. Д.