theano installation documentation状态,theano默认使用numpy中的BLAS库,如果“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
答案 0 :(得分:12)
下载了Anaconda的python库发行版之后,我刚刚在Ubuntu 12.04 LTS 64位上遇到了同样的问题。将Theano指向包含libblas.so的目录进行处理。
$ THEANO_FLAGS=blas.ldflags="-L/usr/lib/ -lblas" python rbm.py
答案 1 :(得分:3)
使用ubuntu,在包管理器中,libblas.so附带了libblas3gf包。 如果以某种方式它不创建libblas.so,但创建libblas.so.X,手动创建一个符号链接,如:
cd /usr/lib64
sudo ln -s libblas.so.3gf libblas.so
注意:这对我来说一直很好,但请阅读下面的评论。请记住,此软件包不会针对您的特定硬件进行优化(例如,请阅读建议使用ATLAS的其他答案)。
答案 2 :(得分:2)
在您的情况下,您应该查看/usr/lib64
并查看libblas
等.so
或.so.X
文件是否可用。
重新编译BLAS并非易事,但您可以尝试为您的发行版安装相关的ATLAS软件包。
答案 3 :(得分:1)
如果安装了最新的numpy版本,theano将在所有情况下正常工作。
从那里开始,关心blas的唯一理由是关于速度。默认blas非常慢。许多发行版再次编译numpy这个慢速blas版本。
一个简单/快速的方法来实现更快的blas实现是安装有关atlas和atlas devel的发行版包。这是一个优化的blas实现。
较新版本的Unbuntu,在完成中安装atlas是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
然后将打印所用的速度与打印的其他比较结果进行比较。
答案 4 :(得分:1)
你的主要问题基本上是发行版维护者是否正确安装了依赖项 - 而且我没有答案或解决方案。
但是,我确实有建议。 ATLAS不是很难建立。获取源代码,解压缩,确保您已满足其依赖关系,然后启动配置&做出步骤。依赖性部分可能是该过程中耗时最多的手动部分。
当然,你必须重新考虑numpy,theano等。虽然我认识到这是一种痛苦(相信我,我经历了Theano和Hannes Shulz以及Andy Mueller的CSV),你获得的好处是BLAS经过调整,可在硬件上实现最佳运行。