之前一直想弄theano,可是python不是很懂,在学习了一段时间之后开始安装theano。当然官网上的安装资料是全,可是也太繁琐了。这里介绍的是最简单,最方面的安装theano的方法。
环境:win8.1_64bit+ anaconda2.1.0_64bit+CUDA6.5_64bit+theano0.7。
1:下载Anaconda 2.1.0
https://repo.continuum.io/archive/.winzip/ ;该链接是anaconda官网的不同时间的版本。anaconda3表示python3.X,而anaconda表示2.X。这个正常安装就好,我是装在C:\Anaconda的,也就是C根目录下。无需重启(最好重启使得安装的path等路径生效)。
2:打开cmd,,可以查看到有,如果没这个,会在后续提示如“g++”找不到,无法编译的问题。
3:输入,会自动在网上搜索theano0.7版本进行安装,会出现
4:这时候其实theano应该算是安装好了,可是如果说只是用cpu,那么体现不出gpu的优势,可以在这个路径下,也就是linux的/home路径,也就是windows的cmd命令运行的时候的路径
新建文件 .theanorc.txt,在里面写上
或官网的
5:输入python进入python环境,然后进行import theano,会出现:
按照之前找的资料,是不会出现这些东西的,为何我出现了,那就不知道。
6:随便建立个测试py文件,写上
import numpy as np import time import theano A = np.random.rand(1000,10000).astype(theano.config.floatX) B = np.random.rand(10000,1000).astype(theano.config.floatX) np_start = time.time() AB = A.dot(B) np_end = time.time() X,Y = theano.tensor.matrices(‘XY‘) mf = theano.function([X,Y],X.dot(Y)) t_start = time.time() tAB = mf(A,B) t_end = time.time() print "NP time: %f[s], theano time: %f[s] (times should be close when run on CPU!)" %( np_end-np_start, t_end-t_start) print "Result difference: %f" % (np.abs(AB-tAB).max(), )
不过注意这里的print不再是2.X的语句,而是需要使用迁移到3.X的函数形式,也就是使用print()。运行后结果:
上图中最后的used the gpu 就是成功使用的证据,虽然上面的那一些出来的东西还暂时搞不懂,不过至少迈出了第一步。
注意事项:
1、为了安装的顺利,在安装anaconda和theano等软件的时候推荐路径中不要有空格,而且最好不要出现中文。
2、首先暂时不论系统是多少位的,你的CUDA装的是32的,那么anaconda也对应下32位的,反之亦然。不过CUDA在7以上版本就开始独立一个文件不区分是否是32还是64位了,可是暂时没看到有用CUDA7来安装Theano的。
3、虽然对于当前时间来说有更新的anaconda2.2.0的版本,但是还是推荐下这个,原因:
a)不同版本中包含的东西不一样,这个版本的包含了mingw,而2.2.0版本的并不包含;虽然可以后续使用例如[5]或者,[5]来进行安装,可是后续还是会出问题如图:
该问题在[3]中的https://github.com/Theano/Theano/issues/2087里面有讨论,不过估计(猜的)是新的anaconda缺少mingw,而使用指令更新后得到的mingw不是原来的版本。
b)theano对python3支持不是很好,所以不推荐下anaconda3系列的,因为theano是基于python2.4以上写的,这个在官网http://deeplearning.net/software/theano/install.html#install 中有说明
如果安装python3的话,在后续import theano的时候会出现[4]中的http://comments.gmane.org/gmane.comp.mathematics.theano.user/6515的问题
(这个观点是按照字面意思猜的,不一定正确,不过该问题却已经解决)这是因为python2.X和python3.X中的默认编码选择已经不一样了,在3中默认是uniconde编码方式的。虽然在日常的代码编写中可以如http://www.cnblogs.com/blueel/archive/2012/08/21/2649590.html这样简单处理,可是对于这个问题,cuda_ndarray.cu,首先进去看不到对应的字符串,而且感觉真正的原因不是这个。(https://github.com/Theano/Theano/issues/783,这个网页没看,不过对这个问题的理解有帮助)。
未做:
1、如果想在VS下做图形化界面的开发,推荐[7]的对应部分。
参考资料:
[1] Theano 官网:http://deeplearning.net/software/theano/index.html
[2] Theano在github上的网址:https://github.com/Theano
[3] Theano在github上的问题讨论区:https://github.com/Theano/Theano/issues
[4] Theano的google团队问题讨论区:http://blog.gmane.org/gmane.comp.mathematics.theano.user
[5] Deep learning:Theano安装攻略:http://blog.163.com/yuyang_tech/blog/static/216050083201469101518900/
[6] 采用anaconda2.1.0的灵感来源:http://blog.csdn.net/u010454729/article/details/43052505
[7] Win8.1_64bit下搭建theano的博客:http://www.th7.cn/Program/Python/201407/228314.shtml