终于配置好Theano ,以后可以开始跑实验了
,写一篇日志记录一下,以防重装系统(这种事经常发生
)不记得怎么配置了。
Theano官网
上的配置比较杂,我就选了其中一种进行配置。
主要材料:VS2010, Anaconda,Theano,CUDA
首先下载 Anaconda,不过最好下载python2.7的(python3.4的配置没有试过)
安装好 Anaconda后,点击下图第一个
进入控制台,输入 conda install mingw libpython ,敲个回车就好
敲个回车,等待安装完成:
安装好了之后 ,就可以打开VS2010进行测试了。但是由于Theano是用Python语言写的,而VS2010本身并不支持Python,需要下载插件PTVS,下载完插件之后双击安装就行。
安装好PTVS之后就可以运行Theano官网上的测试例程了:
运行结果如下:
运行成功,Theano已经配置成功。
如果光用CPU跑的话会比较慢,所以一般会启用GPU加速。
主要材料:VS2010, Anaconda,Theano,CUDA
首先下载 Anaconda,不过最好下载python2.7的(python3.4的配置没有试过)
安装好 Anaconda后,点击下图第一个
进入控制台,输入 conda install mingw libpython ,敲个回车就好
关于
mingw
,详见百度百科
,安装好
mingw之后,就要去下载Theano
下载好Theano-master之后,解压文件,位置不限,以D盘根目录为例。再通过 控制台进入Theano的目录下,输入以下指令(PS:由于我把 Anaconda安装在D盘根目录下,实际上的指令还是根据具体的安装路径来 )
下载好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
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是什么东西,有高手知道的话可以指点一下