Theano 配置记(Anaconda+Theano 0.7+GPU加速+VS2010)

 终于配置好Theano ,以后可以开始跑实验了  ,写一篇日志记录一下,以防重装系统(这种事经常发生  )不记得怎么配置了。 Theano官网 上的配置比较杂,我就选了其中一种进行配置。

主要材料:VS2010, Anaconda,Theano,CUDA

首先下载 Anaconda,不过最好下载python2.7的(python3.4的配置没有试过)
安装好
Anaconda后,点击下图第一个

进入控制台,输入 conda install mingw libpython    ,敲个回车就好
 
关于 mingw ,详见百度百科 ,安装好 mingw之后,就要去下载Theano

下载好Theano-master之后,解压文件,位置不限,以D盘根目录为例。再通过
控制台进入Theano的目录下,输入以下指令(PS:由于我把 Anaconda安装在D盘根目录下,实际上的指令还是根据具体的安装路径来
 
敲个回车,等待安装完成:

安装好了之后 ,就可以打开VS2010进行测试了。但是由于Theano是用Python语言写的,而VS2010本身并不支持Python,需要下载插件PTVS,下载完插件之后双击安装就行。
 安装好PTVS之后就可以运行Theano官网上的测试例程了:
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(), )
 
运行结果如下:
 
 运行成功,Theano已经配置成功。
如果光用CPU跑的话会比较慢,所以一般会启用GPU加速。 
首先得要安装CUDA,在英伟达官网上下载,可能需要注册,CUDA安装比较简单,就跟普通软件安装的过程一样,CUDA安装完成之后,需要进行配置,我是没有找到.theanorc.txt(注意是.theanorc.txt而不是theanorc.txt,有个小数点),不过没事,可以自己创建,最后需要放到C:\users\username文件夹下就可以
以下是我的配置文件:
[global]
device = gpu
floatX = float32
[nvcc]
flags=-LD:\Anaconda\Lib
compiler_bindir=D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin
注意:flags=-LD:\Anaconda\Libs,其中D:\Anaconda\Lib是python的各种库,包括Theano,前面的-L我还不是很清楚是什么意思,如果有高手知道的话,麻烦指点一下可怜,不过必须要加,不加的话会出现下面的错误:



compiler_bindir就是选择编译器的地址。
配置完成之后再测试以下代码:
from theano import function, config, shared, sandbox
import theano.tensor as T
import numpy
import time


vlen = 10 * 30 * 768  # 10 x #cores x # threads per core
iters = 1000


rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], T.exp(x))
print(f.maker.fgraph.toposort())
t0 = time.time()
for i in xrange(iters):
    r = f()
t1 = time.time()
print("Looping %d times took %f seconds" % (iters, t1 - t0))
print("Result is %s" % (r,))
if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):
    print('Used the cpu')
else:
    print('Used the gpu')
运行成功:

不过并不是很清楚CNMeM是什么东西,有高手知道的话可以指点一下微笑


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星空下的仰望者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值