最近Mac OS Xのhomebrew pythonをanacondaに変更しました。大きな(ish)行列を対角化するときにエラーが発生しました。およそ3000x3000エントリー上記マトリックスとscipy.linalg.eigvalsh(A)
を呼び出すと、エラーを与える:anaconda scipyを使用して大きな行列を対角化するとエラーが発生する
$HOME/anaconda2/lib/python2.7/site-packages/scipy/linalg/decomp.pyc in eigvalsh(a, b, lower, overwrite_a, overwrite_b, turbo, eigvals, type, check_finite)
762 overwrite_a=overwrite_a, overwrite_b=overwrite_b,
763 turbo=turbo, eigvals=eigvals, type=type,
--> 764 check_finite=check_finite)
765
766
$HOME/anaconda2/lib/python2.7/site-packages/scipy/linalg/decomp.pyc in eigh(a, b, lower, eigvals_only, overwrite_a, overwrite_b, turbo, eigvals, type, check_finite)
385 if eigvals is None:
386 w, v, info = evr(a1, uplo=uplo, jobz=_job, range="A", il=1,
--> 387 iu=a1.shape[0], overwrite_a=overwrite_a)
388 else:
389 (lo, hi) = eigvals
ValueError: On entry to ZHBRDB parameter number 12 had an illegal value
最終エラーメッセージは、この古いscipyのダウンロードの問題に似ているようだ:scipy/issues/5401、しかし、私は問題を抱えている行列ははるかに小さいです。
print np.__config__.show()
を実行すると得られます。
lapack_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['$HOME/anaconda2/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['$HOME/anaconda2/include']
blas_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['$HOME/anaconda2/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['$HOME/anaconda2/include']
lapack_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['$HOME/anaconda2/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['$HOME/anaconda2/include']
blas_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['$HOME/anaconda2/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['$HOME/anaconda2/include']
None
Anacondaは古いバージョンのLapackを使用して下位互換性をサポートしている可能性があります。どのSciPyのバージョンを使用していますか? – darthbith
私は最新バージョンのanacondaアップデートを実行しています。 '1.0.0' – RGWinston
おそらく以前はMKLを使っていました。 – sascha