Theano 学习笔记(1.搭环境 Anaconda + Theano + VS2010 + CUDA)

最近几天开始接触深度学习,鉴于深度学习对速度和GPU计算的要求以及在网络层数不断加深后求导计算的复杂度不断增加,打算搭建一个Theano平台(抛弃Matlab),仅供自己娱乐下(花式灌水)。。。

主要步骤:

  1. Theano之CPU计算

  2. 搭建CUDA & VS2010
  3. Theano之GPU计算

1.Theano之CPU ONLY

安装Theano的条件:

  1. 需要安装Numpy,Scipy,Noise等等python的包。下载Anaconda(去官网下载这个http://www.continuum.io/downloads,很简单就能配置成功了,Anaconda集成了pip,numpy,scipy等等很多python科学计算的常用包)添加环境变量”path = H:\Anaconda2; H:\Anaconda2\Scripts; H:\Anaconda2\Library\bin;”改成自己的就可以了

  2. 需要gcc编译器。如果你的电脑中已经有了,就可以跳过这一步。如果你之前并没安装gcc编译器,可以自己去http://www.mingw.org/下载最新版,按照上面的步骤走就行了。但是最简单的办法是通过pip(可以用来管理安装python的包)来安装两个包,在cmd下输入conda install mingw libpython即可。添加环境变量”path = H:\Anaconda2\MinGW\bin;H:\Anaconda2\MinGW\x86_64-w64-mingw32\lib;”
  3. 连接gcc和theno。在home文件夹(C:/user/{your name})下新建一个文本文档,取名为.theanorc.txt,并在里面输入以下内容,blas是加速CPU计算,详情请见http://icl.cs.utk.edu/lapack-for-windows/lapack/,但是对于追求GPU多并行单位的人来说,可以跳过

[blas]
ldflags =

我是通过pip直接安装gcc编译器的,其他的方法需要多加几句:

[blas]
ldflags =

[gcc]
cxxflags = -I{your gcc address}

也就是告诉theano你的gcc编译器在哪里,如果通过pip安装mingw就不需要了。

之后,我们可以开心的安装Theano啦啦啦,只需要在cmd下输入pip install theano就行了。。。。

OK,最后在spyder下测试下,

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(), )

结果为

NP time: 0.675000[s], theano time: 0.535000[s] (times should be close when run on CPU!)
Result difference: 0.000000

2.搭建CUDA和VS2010

VS的安装:http://blog.sina.com.cn/s/blog_4f8cdc9e0100kklr.html (会不会被MS拉黑。。。)

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

照着上面的步骤做就行了,在此强调一点,在安装CUDA之前必须要去NVIDIA官网上下载相应的官方驱动,别用驱动XX的驱动,容易出问题,我第一次安装就把显卡驱动弄没了。。。

还有就是怎么知道自己的显卡到底能不能用cuda并行计算框架呢,https://developer.nvidia.com/cuda-gpus告诉你。

3.Theano之GPU计算

在完成了以上的步骤后,剩下的就很简单了,把home文件夹(C:/user/{your name}).theanorc.txt的内容修改为:

[blas]
ldflags =

[nvcc]
fastmath = True
flags = -LH:\Anaconda2\libs
compiler_bindir = D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin

[global]
floatX = float32
device = gpu

flags和complier_binder改成你自己的地址就行了,然后test:

在Spyder下运行

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("It took %f seconds" % (t1 - t0))
if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):
    print(‘Used the cpu‘)
else:
    print(‘Used the gpu‘)

以上所做的就是做很多次(10*30*768*1000)次exp计算,用了张量(Tensor)表示。

比较下我的电脑下CPU和GPU计算的差别

CPU:i7-4720HQ

[Elemwise{exp,no_inplace}(<TensorType(float64, vector)>)]
It took 55.188000 seconds
Used the cpu

GPU(GTX 960M)

[GpuElemwise{exp,no_inplace}(<CudaNdarrayType(float32, vector)>), HostFromGpu(GpuElemwise{exp,no_inplace}.0)]
It took 1.817000 seconds
Used the gpu
Using gpu device 0: GeForce GTX 960M

速度竟然提高了30倍。。。。

呵呵,接下来该爽爽了

时间: 2024-11-05 12:09:40

Theano 学习笔记(1.搭环境 Anaconda + Theano + VS2010 + CUDA)的相关文章

Hadoop学习笔记(3)——分布式环境搭建

Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里,我们采用这样的策略来模拟环境,我们使用3台ubuntu机器,1台为作主机(master),另外2台作为从机(slaver).同时,这台主机,我们就用第一章中搭建好的环境来. 我们采用与第一章中相似的步骤来操作: 运行环境搭建 在前面,我们知道,运行hadoop是在linux上运行的.所以我们单机就在

Cocos2dx 学习笔记整理----开发环境搭建

最近在学习cocos2dx,预备将学习过程整理成笔记. 需要的工具和环境整理一下: 使用的版本 cocos2dx目前已经出到了v3.1.1,学习和项目的话还是用2.2.3为宜,毕竟不大想做小白鼠,并且学习了几天之后才发出3.X版本的,版本内容变动比较大. 开发环境 1 jdk 1.6以上 2 python 2.7为宜(创建项目要用的) 3 NDT+Android SDK 4 Cygwin或者MinGW 开发工具 1 Eclipse + CDT + ADT 2 VS2010 3 Sublime T

学习OpenCV的学习笔记系列之-- 环境配置

要想学好OpenCV,首先当然要知道怎么配置环境了.以本人的配置环境为例,步骤如下. 第一步 下载及解压OpenCV源码 虽然很多第三方网站及一些学习论坛会提供OpenCV的源码下载,但是还是推荐到官网进行下载,这样可以避免很多麻烦!(病毒?木马?你懂得!) 官网的下载地址如下: http://opencv.org/downloads.html 在此地址的界面上可以找到最新版本的OpenCV源码.我使用的是2014-04-25更新的2.4.9版本(目前最新),根据自己的系统选择对应的源码版本.

学习OpenCV的学习笔记系列之-- 环境配置2

要想学好OpenCV,首先当然要知道怎么配置环境了.以本人的配置环境为例,步骤如下. 第一步 下载及解压OpenCV源码 虽然很多第三方网站及一些学习论坛会提供OpenCV的源码下载,但是还是推荐到官网进行下载,这样可以避免很多麻烦!(病毒?木马?你懂得!) 官网的下载地址如下: http://opencv.org/downloads.html 在此地址的界面上可以找到最新版本的OpenCV源码.我使用的是2014-04-25更新的2.4.9版本(目前最新),根据自己的系统选择对应的源码版本.

[java基础学习笔记]Java8SE开发环境搭建、第一个Java Hello World、Java程序的编译与执行

本文作者:sushengmiyan 本文地址:http://blog.csdn.net/sushengmiyan/article/details/25745945 主要内容: ---------------------------------------------------| 1.JDK的下载与安装                            | 2.编写第一个java程序HelloWorld     | 3.编译执行HelloWorld                      

perl学习笔记--搭建开发环境

windows下perl开发环境搭建 perl下载地址:http://www.activestate.com/developer-tools 各个插件的安装方法:(通过代理上网的方法) 方法一:padwalker的安装步骤 1. padwalker下载地址: http://www.bribes.org/perl/ppm/ 2. 解压下载的文件 4. 拷贝 blib/lib/PadWalker.pm 到 Perl/lib(你的安装路径)5. 拷贝 blib/arch/auto/PadWalker

EXTJS学习笔记--搭建实验环境

1.目的 在eclipse中搭建EXTJS的基础环境,学习如何按照从官方下载的代码中搭建新的Extjs工程 2.学习过程中遇到的问题 ext-4.2.1-gpl与ext-4.2.1-commercial的区别        ext-4.2.1-gpl:开源版本,使用GPL开源协议        ext-4.2.1-commercial:商业版本,收费,稳定 作为个人研究来讲,可以使用ext-4.2.1-gpl. 下载的Extjs目录中各个文件说明        主要目录说明 builds目录:压

DirectX10学习笔记&lt;01&gt; 搭建环境-在Visual Studio中配置DirectX

一.工具下载 IDE:Visual Studio 2008 SDK:DirectX SDK,可以从Microsoft的网站上免费下载到.SDK中还包含示例.工具和文档.自带的工具很有用,我们会经常使用其中的DDS纹理工具. 二.设置Visual Studio 2008 菜单栏->Tools->Options... 左边选择Projects and Solutions->VC++ Directories 右边Show directiories for:选择Include files,往下列

Theano学习笔记(三)——图结构

图结构(Graph Structures)是了解Theano内在工作原理的基础. Theano编程的核心是用符号占位符把数学关系表示出来. 图结构的组成部分 如图实现了这段代码: importtheano.tensor as T x= T.matrix('x') y= T.matrix('y') z= x + y 变量节点(variable nodes) 红色表示.变量节点都有owner,其中x与y的owner为none.z的owner为apply. 操作节点(op nodes) 绿色表示.表示