Theano在windows下的安装及GPU加速

安装环境:wondows 64bit

Teano安装测试

1. Anaconda 安装

Anaconda是一个科学计算环境,自带的包管理器conda很强大。之所以选择它是因为它内置了python,以及numpy、scipy两个必要库和一些其他库,比起自己安装要省事。

首先下载Anaconda-2.1.0-Windows-x86_64.exe 安装选择默认配置即可,下砸地址。安装成功后效果如下:

这里有Anaconda管理器(Anaconda Command Prompt),输入conda list来查看已经安装的库。我们可以看到Anaconda已经安装了numpy, nose, pip, python, scipy, mingw等等

PS:

conda install <pkg name> #该命令用于安装应用包,如 conda install numpy.
pip install <pkg name> #该命令用于安装应用包,如 pip install theano.
conda update <pkg name> #升级应用包,如 conda update python

2.卸载之前版本

因为Anaconda里边包含了python,所以需要在windows环境变量中找到Python的环境变量,删除它。或者直接将之前单独安装的python等统统卸载掉。这一步可以在安装Anaconda之前进行。

3. 安装theano

有如下两种安装方法:

1)打开CMD或Anaconda命令窗口,输入 pip install theano。 回车后就是赏心悦目的下载进度条,这个很小,所以安装的比较快。

2)手动下载theano的zip文件

    下载地址:https://github.com/Theano/Theano ,解压到XXX/Anaconda/Lib/site-packages/theano(文件里面有个theano的文件夹,拿出来放在E:/Anaconda/Lib/site-packages里面)目录下。

    添加环境变量:    path: XXX/Anaconda/MinGW/bin;E:/Anaconda/MinGW/x86_64-w64-mingw32/lib;  

                          (32bit  E:/Anaconda/MinGW/i686-w64-mingw32/lib;)   

    新建环境变量:  PYTHONPATH: E:/Anaconda/Lib/site-packages/theano;

PS:有些Anaconda版本底下没有MinGW包,这时可以:CMD输入 conda install mingw libpython, MinGW会自动装到Anaconda下。

4. 测试Theano

在cmd中,输入python 进入到python环境下(PS:此时调用的应该是Anaconda自带的Python,check一下输出路径),然后先输入import theano回车,需要等一段时间,不输出error则说明安装成功。


GPU加速配置

对于用GPU的人(要安装相应的CUDA版本,比如说我用的64位的python环境(Anaconda 64位),CUDA的版本也是64位的)

CUDA的 配置可参考 http://blog.csdn.net/yeyang911/article/details/17450963

1. 配置 .theanorc.txt文件

[global] 
openmp=False 
device = gpu 
floatX = float32 
allow_input_downcast=True
 
[blas] 
ldflags= 
[gcc] 
cxxflags=-IE:\Anaconda\MinGW 
[nvcc] 
flags = -LE:\Anaconda\libs #此处是Anaconda的路径 
compiler_bindir = E:\VS2010\VC\bin #此处一定要和你安装的VS的路径保持一致,如果是默认安装的,应该是C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\bin 
fastmath = True 
flags=-arch=sm_30 #我的加入这句话会报错,去掉就好了

2. 测试GPU加速

 

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 range(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')

 

 


参考:http://blog.csdn.net/niuwei22007/article/details/47684673

 http://blog.sina.com.cn/s/blog_990865340101hvuq.html

 

 
posted @ 2016-03-17 17:12  小白菜的BLOG  阅读(11172)  评论(0编辑  收藏  举报