theanoインストールドキュメント は、「BLASライブラリが動的にロード可能なライブラリとして利用可能である」場合、 theano はデフォルトでnumpyのBLASライブラリを使用すると述べています。これは私のマシンでは機能していないようです。エラーメッセージを参照してください。
さらに情報が必要な場合は、お知らせください。
エラーメッセージ
_We did not found a dynamic library into the library_dir of the library we use for blas. If you use ATLAS, make sure to compile it with dynamics library. /usr/bin/ld: cannot find -lblas
_
付録
theano ライブラリには、とりわけnumpyとBLASライブラリが必要です。 Ubuntuで _Sudo apt-get install python-numpy python-scipy
_ を使用してインストールすると、numpyにはBLASが付属していると思いました。
これは_/usr/lib64/python2.6/dist-packages/scipy/lib/blas
_のファイルリストです
_cblas.so info.py __init__.py scons_support.py setup.py
fblas.so info.pyc __init__.pyc scons_support.pyc setup.pyc
setupscons.py test
setupscons.pyc
_
これはdistutils.__config__.show()
の出力です。次のとおりです。
_blas_info:
libraries = ['blas']
library_dirs = ['/usr/lib64']
language = f77
lapack_info:
libraries = ['lapack']
library_dirs = ['/usr/lib64']
language = f77
atlas_threads_info:
NOT AVAILABLE
blas_opt_info:
libraries = ['blas']
library_dirs = ['/usr/lib64']
language = f77
define_macros = [('NO_ATLAS_INFO', 1)]
atlas_blas_threads_info:
NOT AVAILABLE
lapack_opt_info:
libraries = ['lapack', 'blas']
library_dirs = ['/usr/lib64']
language = f77
define_macros = [('NO_ATLAS_INFO', 1)]
atlas_info:
NOT AVAILABLE
lapack_mkl_info:
NOT AVAILABLE
blas_mkl_info:
NOT AVAILABLE
atlas_blas_info:
NOT AVAILABLE
mkl_info:
NOT AVAILABLE
_
pythonライブラリのAnacondaディストリビューションをダウンロードした後、Ubuntu 12.04 LTS64ビットで同じ問題が発生しました。Theanoをlibblas.soを含むディレクトリにポイントすると問題が解決しました。
$ THEANO_FLAGS=blas.ldflags="-L/usr/lib/ -lblas" python rbm.py
Ubuntuでは、パッケージマネージャーのlibblas.soにlibblas3gfパッケージが付属しています。どういうわけかlibblas.soを作成せず、libblas.so.Xを作成する場合は、次のようなシンボリックリンクを手動で作成します。
cd /usr/lib64
Sudo ln -s libblas.so.3gf libblas.so
注意:これは私にとっては問題なく機能していますが、以下のコメントを読んでください。また、このパッケージは特定のハードウェアに最適化されないことに注意してください(たとえば、ATLASを提案する他の回答を読んでください)。
あなたの場合、/usr/lib64
を調べて、libblas
などが.so
または.so.X
ファイルとして利用できるかどうかを確認する必要があります。
BLASの再コンパイルは簡単ではありませんが、ディストリビューションに関連するATLASパッケージをインストールしてみることができます。
Numpyの最近の十分なバージョンがインストールされている場合、theanoはすべての場合に正しく機能します。
そこから、使用されるブラスを気にする唯一の理由はスピードについてです。デフォルトのブラスは非常に遅いです。多くのディストリビューションは、この遅いblasバージョンを再びnumpyでコンパイルします。
より高速なblas実装を実現する簡単で高速な方法は、atlasおよびatlasdevelに関するディストリビューションパッケージをインストールすることです。これは最適化されたblas実装です。
Unbuntuの新しいバージョンであるdoneでのアトラスのインストールは、numpyがそれを使い始めるような方法です。したがって、これについてTheanoで何も変更する必要はありません。他のディストリビューションがこれを行うかどうかはわかりません。
Theanoの使用が速いかどうかを確認する最良の方法は、時間を計ることです。これを行うには、bashでこれを実行します。
X=`python -c "import theano;import os.path; print os.path.split(theano.__file__)[0]"`
python ${X}/misc/check_blas.py
次に、実行にかかった速度を、印刷された他の比較結果と比較します。
あなたの主な質問は、基本的に、ディストリビューションのメンテナが依存関係を正しくインストールしているかどうかの1つです。そのため、私には答えも解決策もありません。
ただし、推奨事項はあります。 ATLASを構築するのはそれほど難しくありません。ソースを取得し、解凍して、依存関係が満たされていることを確認してから、構成と作成の手順を開始します。依存関係の部分は、おそらく最も時間がかかる手動プロセスの部分です。
もちろん、numpy、theanoなどを再リンクする必要があります。これは苦痛だと認識していますが(信じてください、TheanoとHannes Shulz&Andy MuellerのCSVの両方で試しました)、得られるメリットはBLASに合わせて調整されていることです。ハードウェア上で最適に実行します。