手把手教你搭建深度学习平台——避坑安装theano+CUDA

python有多混乱我就不多说了。这个混论不仅是指整个python市场混乱,更混乱的还有python的各种附加依赖包。为了一劳永逸解决python的各种依赖包对深度学习造成的影响,本文中采用python的发行版Anaconda。

Step1 安装Anaconda

这里不建议使用python3.4以后的Anaconda版本,因为太新的版本(python3.5)不支持python/matlab混合编程.所以为了以后方便,建议使用python2.7的Anaconda版本。Anaconda安装完成后,numpy和scipy等百余个常见的依赖包自动安装完成。anaconda路径自动在环境变量中添加。

Step2 安装minGW,libpython

网上建议的下载minGW基本就是扯淡,因为下载minGW麻烦不说,文件找不到,路径还要自己配。这里给一个超级方便的方法。在未下载minGW和libpython的情况下,在线安装。当然这要求你的电脑要联网。首先打开命令行窗口,在命令行窗口(看清楚我说的是命令行窗口不是python的shell脚本)输入命令如下:

conda install mingw libpython

中间会要你选择Proceed([y]/n)? 当然要选y了。输入y,然后按回车键。如果幸运的话,你的电脑会一溜烟安装完。可惜相当一部分人并不幸运,他们会发现一个蛋疼的问题——文件在线下一半不下了,要么就是网速慢成狗。也难怪,谁让这条命令需要链接境外的服务器呢,拜某墙所赐才会下的这么慢。不要急,有办法。如果你已经下了一半,然后卡成了狗。请遵守以下步骤:

(1)狠下心关掉文件下载了一多半的命令行窗口。

(2)重新打开命令行窗口

(3)输入命令

conda clean --lock

输完上述命令后会蹦出一行提示:removing (你的home路径)\Anaconda2\pkgs\.conda_lock-1056

如果你不输入这个命令直接输入conda install mingw libpython的话,你会发现系统不给装,因为有文件残留的原因。他会认为你要下载的minGW和libpython已经存在了(刚才下过了,只不过是残的)。

(4)输入命令

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --set show_channel_urls yes

第一句话的意思是告诉conda命令等会你别往境外找了,就找我给你的这个地址就可以了。这个是清华大学的anaconda免费package文件服务器

第二句话的意思是告诉conda命令,让我看看你的url对不对(这句话执行后有可能不显示,这是正常的,不用急)

(5)输入命令

conda install mingw libpython

做完以上步骤后就会出现这个界面:

这就说明是装好了。

然后再环境设置的路径里看一下是不是有mingw的路径了。没有的添加一下。;C:\Users\Marijuana\Anaconda2\MinGW\bin;C:\Users\Marijuana\Anaconda2\MinGW\x86_64-w64-mingw32\lib

Step3 安装theano

这里也是无需下载直接安装,命令行里输入命令

pip install theano

界面是这样的:

theano安装完成后可以在Anaconda2\Lib\site-packages\theano文件夹下找到theano的文件夹。然后不要忘记将该路径加入环境变量中,在我的电脑中路径如下:

;C:\Users\Marijuana\Anaconda2\Lib\site-packages\theano

Step4 配置路径文件

第一步,在你的电脑User目录下找到你的用户文件夹,我的登陆用户名是Marijuana,然后在C:\Users\Marijuana下新建文本文档,此时果断不要改名

第二步,在新建文本文档中输入如下命令:

[global]

openmp=False

[blas]

Idflags=

[gcc]

cxxflags=-IC:\Users\Marijuana\Anaconda2\MinGW

注意标红的路径是根据你自己的MinGW来设置的,不需要和我的一样

第三步,保存,改文本文档的名字为.theanorc.txt(注意theano前还有一个点)

最后一步,重启电脑

Step5 theano测试

从cmd进入python的shell脚本

输入如下指令:

>>> import theano

>>> theano.test()

然后静静等待测试完成。经过漫长的等待之后或许你的显示如下:

看到errors=0 failures=0,你就可以确定你成功了。但是你的也有可能是这样:

SKIP=26,errors=80,那就是说,失败了。仔细查找看显示出的信息:

似乎所有的错误都是同一个:ERROR: Failure: ImportError (No module named nose_parameterized)   错误的意思是:没有名叫nose_parameterized的模块

解决方法就是:安装名为nose_parameterized的模块,在命令提示符的窗口下输入如下代码:

pip install nose_parameterized

然后再进入python的shell脚本界面,重新输入

>>> import theano

>>> theano.test()

经过漫长的等待,可以看到我们成功的测试结果

基于CUDA+NVIDIA的GPU加速配置

Step1 安装Visual Studio

我个人推荐Win10+VS2012或者是Win7+VS2010,当然其他的选择也大略如此,并不用太纠结。但是千万要注意:不要用Visual Studio 2015!!!因为兼容性问题

首先,在微软的官网上下载Visual Studio,这里我下载的是VS2012.全部安装完成后需要输入密钥,密钥是 RBCXF-CVBGR-382MK-DFHJ4-C69G8

其次,在CUDA的官网上下载CUDA。我的是Win10的系统,由于顾虑版本兼容性问题,我选用的是较新的版本CUDA7.0,但是后来来看似乎版本对CUDA的影响不是太大。CUDA安装不需要密钥。CUDA安装好后,如果安装正确,环境变量里面会多出两个变量(不是path里面多两个路径),CUDA_PATH_V7_0和CUDA_PATH

然后重新打开命令行界面,输入

nvcc -V

如果能够显示版本信息(如下)就是正确安装:

最后一步:重新配置.theanorc.txt文件

[global]

openmp=False

device=gpu

floatX=float32

allow_input_downcast=True

[blas]

ldflags=

[gcc]

cxxflags=-IC:\Users\Marijuana\Anaconda2\MinGW

[nvcc]

flags=-LC:\Users\Marijuana\Anaconda2\libs

compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin

fastmath=True

flags=-arch=sm_30

一段Python代码测试基于VS的CUDA加速在theano上是否应用成功

Spyder是一个Python的集成编辑器,Spyder的介绍请参见附录D Spyder接口大法,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 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‘)

然后点击工具栏中的绿三角运行程序,当然你需要点选一个右下角的Kernel作为输出环境。我的代码运行起来后输出如下,从输出来看,使用了gpu

runfile(‘C:/Users/Marijuana/.spyder2/temp.py‘, wdir=‘C:/Users/Marijuana/.spyder2‘)

DEBUG: nvcc STDOUT mod.cu

????????? C:/Users/Marijuana/AppData/Local/Theano/compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64/cuda_ndarray/cuda_ndarray.lib ????? C:/Users/Marijuana/AppData/Local/Theano/compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64/cuda_ndarray/cuda_ndarray.exp

Using gpu device 0: GeForce 920M (CNMeM is disabled, cuDNN not available)

DEBUG: nvcc STDOUT mod.cu

????????? C:/Users/Marijuana/AppData/Local/Theano/compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64/tmpzarusg/97496c4d3cf9a06dc4082cc141f918d2.lib ????? C:/Users/Marijuana/AppData/Local/Theano/compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64/tmpzarusg/97496c4d3cf9a06dc4082cc141f918d2.exp

INFO (theano.gof.compilelock): Refreshing lock C:\Users\Marijuana\AppData\Local\Theano\compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64\lock_dir\lock

DEBUG: nvcc STDOUT mod.cu

????????? C:/Users/Marijuana/AppData/Local/Theano/compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64/tmpfonthz/6174b19f8005a60d6a2faaae7ff1c9a7.lib ????? C:/Users/Marijuana/AppData/Local/Theano/compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64/tmpfonthz/6174b19f8005a60d6a2faaae7ff1c9a7.exp

INFO (theano.gof.compilelock): Refreshing lock C:\Users\Marijuana\AppData\Local\Theano\compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64\lock_dir\lock

DEBUG: nvcc STDOUT mod.cu

????????? C:/Users/Marijuana/AppData/Local/Theano/compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64/tmpykz3yg/3c923ca60ec57848906002c5ee763565.lib ????? C:/Users/Marijuana/AppData/Local/Theano/compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64/tmpykz3yg/3c923ca60ec57848906002c5ee763565.exp

[GpuElemwise{exp,no_inplace}(<CudaNdarrayType(float32, vector)>), HostFromGpu(GpuElemwise{exp,no_inplace}.0)]

(‘Looping 1000 times took‘, 2.11299991607666, ‘seconds‘)

(‘Result is‘, array([ 1.23178029,  1.61879349,  1.52278066, ...,  2.20771813,

2.29967761,  1.62323296], dtype=float32))

Used the gpu

如果这个程序能够装好,说明你已经成功在python里面装载了theano,并且theano使用了CUDA平台。

时间: 2024-10-17 19:03:13

手把手教你搭建深度学习平台——避坑安装theano+CUDA的相关文章

手把手教你用深度学习做物体检测(六):YOLOv2介绍

本文接着上一篇<手把手教你用深度学习做物体检测(五):YOLOv1介绍>文章,介绍YOLOv2在v1上的改进.有些性能度量指标术语看不懂没关系,后续会有通俗易懂的关于性能度量指标的介绍文章. YOLOv2 论文:< YOLO9000: Better, Faster, Stronger> 地址:  https://arxiv.org/pdf/1612.08242v1.pdf yolov2和v1的区别 引入了Batch Normalization  有一定的正则化效果,可以减轻过拟合,

手把手教你搭建Python虚拟环境,还不会赶紧收藏学习哦!

不同的python项目可能会用到不同的包,而不同的包或不同的python版本之间可能存在冲突.因此,为每个项目创建不同的虚拟环境非常有用.它可以保证一个项目只访问,它所在虚拟环境下安装的包,保持全局解释器的干净整洁,而且由于环境是独立的,因此不需要超户权限. 创建虚拟环境的方式一般有以下几种. 一种是自Python 3.3增加的用于创建虚拟环境的venv标准库.使用这种方法会在指定目录下,创建一个指定虚拟环境名字的文件夹. 像下面这样,在我创建了一个名为 vir1 的虚拟环境后,产生了一个对应的

手把手教你搭建caffe及手写数字识别(全程命令提示、纯小白教程)

手把手教你搭建caffe及手写数字识别 作者:七月在线课程助教团队,骁哲.小蔡.李伟.July时间:二零一六年十一月九日交流:深度学习实战交流Q群 472899334,有问题可以加此群共同交流.另探究实验背后原理,请参看此课程:11月深度学习班. 一.前言 在前面的教程中,我们搭建了tensorflow.torch,教程发布后,大家的问题少了非常多.但另一大框架caffe的问题则也不少,加之caffe也是11月深度学习班要讲的三大框架之一,因此,我们再把caffe的搭建完整走一遍,手把手且全程命

一旦手把手教你开发微信公众平台

一旦手把手教你开发微信公众平台 目录 一旦手把手教你开发微信公众平台 目录 1 初步认识微信公众平台 2 如何申请微信公众平台测试号 3 接口配置信息 4 环境搭建以及验证消息真实性 1: 初步认识微信公众平台 微信公众平台,简称weChat.曾命名为"官号平台"和"媒体平台",最终定位为"公众平台",无疑让我们看到一个微信对后续更大的期望.和新浪微博早期从明星战略着手不同,微信此时已经有了亿级的用户,挖掘自己用户的价值,为这个新的平台增加更优质

基于Spark的异构分布式深度学习平台

导读:本文介绍百度基于Spark的异构分布式深度学习系统,把Spark与深度学习平台PADDLE结合起来解决PADDLE与业务逻辑间的数据通路问题,在此基础上使用GPU与FPGA异构计算提升每台机器的数据处理能力,使用YARN对异构资源做分配,支持Multi-Tenancy,让资源的使用更有效. 深层神经网络技术最近几年取得了巨大的突破,特别在语音和图像识别应用上有质的飞跃,已经被验证能够使用到许多业务上.如何大规模分布式地执行深度学习程序,使其更好地支持不同的业务线成为当务之急.在过去两年,百

Paddle 教程:人工智能领域深度学习平台

百度开源了其深度学习平台Paddle,引发了挺多人工智能领域开发者的兴趣,包括一些之前一直在Tensorflow和Caffe上练手的开发者.不过鉴于深度学习的开源平台目前并不多,作为开发者也作为热心吃瓜群众的头等大事,就是想知道——这个平台怎么样?别人怎么看这个平台?以及这个平台跟Tensorflow以及Caffe有何区别? 这个平台本身怎么样 Paddle本身在开源前就一直存在,始于2013年的时候,因为百度深度实验室察觉到自己在深度神经网络训练方面,伴随着计算广告.文本.图像.语音等训练数据

手把手教你搭建LyncServer2013之准备篇(一)

这次实验的拓扑结构如下: 首先准备AD域,把DC这台服务器提升为域服务器,在这里,域服务器的安装就不上图了,DNS会随域控制器的安装一起安装,这次安装的Lync版本为Lync Server 2013,规划的Lync内部WEB地址和外部WEB地址一样,都为pool01.iSusan.cn,而两台Lync前端做为DNS轮询负载,所以在DNS下需要加入如下A记录: 192.168.137.12 pool01.iSusan.cn 192.168.137.13 pool01.iSusan.cn 192.1

手把手教你搭建LyncServer2013之CA准备(二)

首先进行CA服务的安装,安装完后在组策略中配置计算机证书自动申请 到此,证书服务器已经安装完成,下一步开始配置计算机自动证书申请 手把手教你搭建LyncServer2013之CA准备(二),布布扣,bubuko.com

手把手教你搭建LyncServer2013之Lync后端存储准备(三)

这次实验的Lync后端存储安装的是SQL Server 2012,配置了高可用,两台做Mirror,一台做见证服务器,实现故障的自动转移,SQL Server的安装需要.net Framwork 3.5的支持,所以在安装SQL之前,我们先来安装.net Framework 3.5 安装完.net Framework 3.5后,我们开始第一台SQL Server 2012的安装 到此第一台Lync后端存储服务器已经安装好,因为我这次实验中需要安装监控和存档角色,所以在安装数据库的时候选择了三个功能