项目的需要,也要上手Python,下面介绍一下theano的安装和GPU的配置,这样能够帮助看到这篇文章的人省些力气,少走些弯路。
1.Theano的安装
系统环境:win10 64位
VS: VS2010
Anaconda:Anaconda-2.3.0-Windows-x86_64
1.1 安装Anaconda
Anaconda包含了Theano所需的各种Python库,使用Anaconda来安装Python环境最方便。
到Anoconda网站下载Anaconda-2.3.0-Windows-x86_64(链接),以前的Anaconda版本带MinGW环境,2.0.1版本的Anaconda好像不带MinGW了。
安装的时候勾选把Anaconda加到环境变量中。
安装完检查一下,打开cmd命令行(也可以在Anaconda的命令窗口进行):
C:\Windows\system32>python --version
正常会返回Python的版本信息
1.2 安装MinGW
MinGW含有gcc,g++,ld等常用编译器。
1. 打开CMD(注意是windows命令提示符,并不是进入到python环境下,否则会提示语法错误,因为conda命令就是在windows下面执行的。);
2. 输入 conda install mingw libpython,然后回车,会出现安装进度,稍等片刻即可安装完毕。此时在你的Anaconda安装目录下就有Anaconda\MinGw目录了。
安装完检查一下,打开cmd命令行:
where gcc
where ld
正常的话也会返回各自的版本信息
1.3 安装theano
打开cmd命令行:
pip install theano
Theano就安装到Python环境中,这里就是Anaconda中。
1.4 配置gcc的编译环境
在home下(cmd的那个路径)新建一个.theanorc.txt文件,例如home路径是C:\Users\myname。
配置文件内容:
[global]
openmp=False
[blas]
ldflags=
[gcc]
cxxflags = -IC:\mingw-w64\x86_64\mingw64\include
cxxflags = -LC:\Anaconda
1.5 检查
打开cmd命令行:
python
>>>import theano
import的时候稍等几秒(Theano要进行编译),应该不会有错误。
按照Deeplearning给出的测试例子,编辑一个test.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(), )
执行这个文件,应该能得到正确结果。
如果不考虑GPU,BLAS等问题,现在就大功告成了!
2.Theano中GPU的配置
2.1 检查电脑显卡是否支持GPU加速(链接)
2.2 C++环境的安装,建议直接安装一套微软的Visual Studio环境,建议Visual Studio 2010或更高版本。
2.3 并行计算架构CUDA的安装。本人安装的是CUDA 7.0版本。CUDA各版本下载地址:https://developer.nvidia.com/cuda-toolkit-archive。注意,下载的时候有些版本需要区分desktop(台式机)和 notebook(笔记本)。之后CDM 命令行输入 nvcc –V 查看是否安装成功
2.4 重新配置一下.theanorc.txt文件里面的信息,下面是我的配置我文件,大家可以参考下
<span style="font-family:Microsoft YaHei;font-size:12px;">[global]
openmp=False
device = gpu
floatX = float32
[blas]
ldflags=
[gcc]
cxxflags = -IF:\program\Python\Anaconda\mg\MinGW\x86_64-w64-mingw32\include #这里是你自己Anaconda安装目录
cxxflags = -LF:\program\Python\Anaconda #这里是你自己Anaconda安装目录
[nvcc]
flags = -LF:\program\Python\Anaconda\mg\libs #这里是你自己Anaconda安装目录
compiler_bindir = F:\program\visual studio\VC\bin #这里是你自己的visual studio安装目录
fastmath = True</span>
2.5 现在可以启动Spyder,下面的Theano GPU加速测试案例代码并运行,如果最终其中有一条“Used the gpu”信息输出,表明Theano GPU加速测试成功。
<span style="font-family:Microsoft YaHei;">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'% iters, t1- t0,'seconds'
print'Result is', 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'</span>
参考:
1.http://blog.csdn.net/m624197265/article/details/45700619
2.http://blog.5ibc.net/p/13875.html