【DeepLearning工具】Fedora下安装Theano


1、Theano简介

Theano是深度学习的一个python库,在deeplearning.net上有它的tutorial,它可以方便我们写深度学习模型,它提供了在GPU上训练模型的选项,极大加快训练速度。


如此强大而方便的工具,必须上手,下面我详细记录一下我在安装Theano过程中碰到的问题,以及最终的解决方法。我的系统是Fedora,对于其他linux系统,方法也是类似的。在fedora、Redhat、CentOS中,用到的软件包管理工具是yum,在ubuntu、debian系统中用到的是与yum类似的apt-get。所以,将我下面安装过程中的yum命令换成apt-get,或许是一样的。当然,我的安装过程仅供参考,I'm not responsible for any responsibility。


2、Theano安装过程

Theano的安装依赖于很多其他的软件包,有必需的,也有可选的,下面分开来说。此外,python的版本必须大于python2.6,在shell下直接键入python,查看你的版本,如果小于2.6,得先升级。


(1)必须安装的依赖项

首先,进入shell,su切换到root用户,安装以下几个软件包

  • 安装numpy
>>>sudo yum install numpy



  • 安装scipy
>>>sudo yum install numpy



  • 安装BLAS
>>>sudo yum install blas blas-devel lapack lapack-devel atlas atlas-devel --nogpgcheck



BLAS是基础线性代数程序集(Basic Linear Algebra Subprograms),安装了BLAS之后,numpy、scipy会自动依赖于BLAS加速,检验numpy是否成功依赖于BLAS编译,可以进入python环境,键入:

>>> import numpy >>> id(numpy.dot) == id(numpy.core.multiarray.dot) False



结果是False表明成功依赖了BLAS加速,True的话表明用的是python自己的实现,并未加速。


  • 安装g++
>>>yum install gcc gcc-c++



注意fedora下g++编译器的名称是gcc-c++,在debian系统下则是g++,用apt-get install gcc g++



(2)安装可选依赖项

可选的依赖项有nose、Sphinx、Git、pydot、NVIDIA CUDA drivers and SDK、libgpuarray,其中nose是python的一个测试工具,我已经装过了,其他的因为我暂时不用到,就先不安装了,以后装了再更新,特别是最后面两项CUDA、gpu,用于加速的,迟早会用到。


(3)安装pip

接着按照官网建议,通过pip从PyPi上面拽theano,所以得先安装pip,安装pip有好几种方法,可以参考官网:http://pip-cn.readthedocs.org/en/latest/installing.html 

安装pip有两种方法,一种是通过脚本安装,一种是通过软件包管理器来安装,我建议直接用软件包管理器来安装,只需要键入一行代码:

>>>sudo yum install python-pip



通过yum管理器安装一般都会成功。如果你想通过脚本安装的话,你需要先下载get-pip.py,把它放到linux的当前目录下,然后键入:


python get-pip.py



运气不好的话,你会碰到这样的错误:

ImportError: No module named 'pip._vendor.requests'



这个问题我也碰到了,在stackoverflow上找到了解决方法:

问题地址,问题出现的原因是系统中的_ssl模块没安装好,所以需要先安装好openssl模块:


>>>yum install openssl-devel



然后重新编译python,具体的方法见:

python安装完毕后,提示找不到ssl模块的解决步骤


我没试过,挺麻烦的。


(4)安装theano



上面已经安装好了pip,现在可以通过pip来安装theano了,pip类似于easy_install,用来安装python的第三方库的,它的默认源地址是:https://pypi.python.org/simple/ 



使用这个源有两个弊端:(1)国内访问速度极慢。(2)这个源上使用了https协议,如果系统上openssl或ssl模块没安装好,会导致pip访问失败。不信的话,你可以试一下键入:

>>>pip  install theano

如果你很快安装好了theano,那说明上面(1)和(2)提到的问题你都没碰到。如果你运气不好,像我一样,(1)和(2)的问题都给我遇上了:下载theano软件包的速度非常慢,下到80%的时候,“Hash of the ....Bad md5 hash.... ”错误退出,多半是ssl模块的问题。


所以,这里说一个方法,绕开(1)和(2)这两个弊端:

从 http://www.pypi-mirrors.org/ 上查看国内的PyPi镜像源,你可以发现一半都是china的,可悲又可喜啊~~

ok,我用了清华的镜像源,键入下面的代码:

>>>pip install theano -i https://pypi.tuna.tsinghua.edu.cn/simple/



很快就安装完毕。


3、测试Theano是否安装正确



安装完后,进入python环境,键入:



>>>import theano>>>theano.test()





整个测试过程大概20~30分钟,我的测试结果:



Ran 2441 tests in 1793.373s FAILED (errors=18) <nose.result.TextTestResult run=2441 errors=18 failures=0>

并且前面出现了许多“Errors”和"KnownFailureTest",这些是“已知”的errors,并无大碍。