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

赵小胖的脑科学园地 赵小胖的脑科学园地     2022-08-08     604

关键词:

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

 

 
然后点击工具栏中的绿三角运行程序,当然你需要点选一个右下角的Console作为输出环境。我的代码运行起来后输出如下,从输出来看,使用了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平台。

保姆级深度学习环境搭建(亲测避坑)(代码片段)

一、安装显卡驱动1、查看显卡驱动型号可以打开任务管理器,点开性能,看到显卡名字;2、下载显卡驱动进入英伟达官网,下载对应的显卡驱动:官方驱动|NVIDIAhttps://www.nvidia.cn/Download/index.aspx?lang=cn选择对... 查看详情

保姆级深度学习环境搭建(亲测避坑)(代码片段)

一、安装显卡驱动1、查看显卡驱动型号可以打开任务管理器,点开性能,看到显卡名字;2、下载显卡驱动进入英伟达官网,下载对应的显卡驱动:官方驱动|NVIDIAhttps://www.nvidia.cn/Download/index.aspx?lang=cn选择对... 查看详情

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

手把手教你搭建caffe及手写数字识别作者:七月在线课程助教团队,骁哲、小蔡、李伟、July时间:二零一六年十一月九日交流:深度学习实战交流Q群472899334,有问题可以加此群共同交流。另探究实验背后原理,请参看此课程:11... 查看详情

java学习第一步:jdk环境搭建(手把手教你)

众所周知,当你学习一门新语言的时候,总是免不了环境搭建这一步:软件、插件、各种包......尤其是Java,我周围就有很多同学都是因为不会搭建JDK环境而放弃后续的学习——其实大部分都是因为怕麻烦、粗心或者手残而失败... 查看详情

深度学习入门篇--手把手教你用tensorflow训练模型

欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~作者:付越 导语Tensorflow在更新1.0版本之后多了很多新功能,其中放出了很多用tf框架写的深度网络结构(https://github.com/tensorflow/models ),大大降低了开... 查看详情

python学习笔记windows下安装theano

...报decode错是什么原因?(3)Wndows8.164bit环境下搭建深度学习平台之Theano安装配置(4)deeplearning学习环境Theano安装(win8+win7)1简单记录过程(1)安装anaconda:DownloadAnacondanow!(2)根据Installatio... 查看详情

手把手教你安装cuda(一看就会)(代码片段)

1.背景学习深度学习的话,肯定需要安装PyTorch和TensorFlow,安装这两个深度学习框架之前得安装CUDA.CUDA是什么?CUDA是一个并行计算平台和编程模型,能够使得使用GPU进行通用计算变得简单和优雅。Nvidia官方提供的CUDA库是一个完整... 查看详情

手把手教你搭建jfrogartifactory本地仓库(代码片段)

jfrog本地仓库搭建首先需要去官网(jfrog.com/open-source…)下载jfrog安装包,打开后可能会有这样的提示容易误导大家,这时候直接点击关掉弹窗,然后点击右上角的Downloades,会往下滑到下载地址的位置,然后选择... 查看详情

手把手搭建一个测试平台

Java手把手教你基于JMeter开发一个自动化测试平台-知乎 查看详情

手把手搭建一个测试平台

Java手把手教你基于JMeter开发一个自动化测试平台-知乎 查看详情

手把手搭建一个测试平台

Java手把手教你基于JMeter开发一个自动化测试平台-知乎 查看详情

手把手教你利用开源项目搭建一个属于自已的电商平台(代码片段)

我们知道想要搭建一个页面优美,功能完善,支持全面(app,web,小程序)的电商平台所投入的人力,物力以及成本不计其数,作为一家刚刚起步或技术不够成熟,没有稳定架构的中小型企业,如何在... 查看详情

手把手教你用express搭建个人博客

新手入门指引,如果你很熟悉express的用法那么就可以跳过教程到底部,到github看下源码1.首先需要安装node环境,版本最新比较好,最低4.0+吧  我本地的node环境是6.4:   2.express中文官网:http://www.expressjs.com.cn/,在这里... 查看详情

手把手教你:基于深度残差网络(resnet)的水果分类识别系统(代码片段)

系列文章手把手教你:图像识别的垃圾分类系统手把手教你:人脸识别考勤系统手把手教你:基于粒子群优化算法(PSO)优化卷积神经网络(CNN)的文本分类目录系列文章一、项目简介二、水果分类结... 查看详情

手把手教你搭建vue环境

第一步node环境安装1.1如果本机没有安装node运行环境,请下载node安装包进行安装1.2如果本机已经安装node的运行换,请更新至最新的node版本下载地址:https://nodejs.org/en/或者http://nodejs.cn/第二步node环境检测为了快乐的使用命令行,... 查看详情

手把手教你搭建vue环境(代码片段)

第一步node环境安装1.1如果本机没有安装node运行环境,请下载node安装包进行安装1.2如果本机已经安装node的运行换,请更新至最新的node版本下载地址:https://nodejs.org/en/ 或者 http://nodejs.cn/第二步node环境检测为了快乐的使用... 查看详情

白帽子***手把手教你:如何搭建属于自己的******实验环境?

课前声明:1、本分享仅做学习交流,请自觉遵守法律法规!2、搜索:Kali与编程,学习更多网络***干货!3、Kali与编程每天准时更新,敬请学习和关注!正文部分一、背景介绍Metasploit就是一个漏洞框架。它的全称叫做TheMetasploitFr... 查看详情

十分钟手把手教你搭建一个属于自己的博客(代码片段)

引言上周有个小伙伴问我有没有个人博客,想和我互换一个友链。我以前也想过要自己搭个博客,但是一直迟迟没有行动,一般写了文章就往其他平台发一下就完事了。想了想为啥自己没有搭建一个属于自己的博客?一来的话可... 查看详情