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 --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平台。
- 手把手教你用深度学习做物体检测(五):YOLOv1介绍
"之前写物体检测系列文章的时候说过,关于YOLO算法,会在后续的文章中介绍,然而,由于YOLO历经3个版本,其论文也有3篇,想全面的讲述清楚还是太难了,本周终于能够抽出时间写一些YOLO算法 ...
- 手把手教你用深度学习做物体检测(六):YOLOv2介绍
本文接着上一篇<手把手教你用深度学习做物体检测(五):YOLOv1介绍>文章,介绍YOLOv2在v1上的改进.有些性能度量指标术语看不懂没关系,后续会有通俗易懂的关于性能度量指标的介绍文章 ...
- centos7 手把手从零搭建深度学习环境 (以TensorFlow2.0为例)
目录 一. 搭建一套自己的深度学习平台 二. 安装系统 三. 安装NVIDA组件 四. 安装深度学习框架 TensorFlow 五. 配置远程访问 六. 验收 七. 福利(救命稻草
- 手把手教你用深度学习做物体检测(七):YOLOv3介绍
YOLOv3 论文:< YOLOv3: An Incremental Improvement > 地址: https://arxiv.org/pdf/1804.02767.pdfyolov ...
- ML平台_微博深度学习平台架构和实践
( 转载至: http://www.36dsj.com/archives/98977) 随着人工神经网络算法的成熟.GPU计算能力的提升,深度学习在众多领域都取得了重大突破.本文介绍了微博引入深度学 ...
- 手把手教你搭建 ELK 实时日志分析平台
本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢? ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash 和 Kiban ...
- ubuntu16.04+七彩虹GTX1060的NVIDIA驱动+Cuda8.0+cudnn5.1+tensorflow+keras搭建深度学习环境【学习笔记】【原创】
平台信息:PC:ubuntu16.04.i5.七彩虹GTX1060显卡 作者:庄泽彬(欢迎转载,请注明作者) 说明:参考了网上的一堆的资料搭建了深度学习的开发环境,下班在宿舍折腾了好几个晚上才搞定,写 ...
- 手把手教你搭建FastDFS集群(下)
手把手教你搭建FastDFS集群(下) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u0 ...
- 基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境
基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境 前言一.环境准备环境介绍软件下载VMware下安装UbuntuUbuntu下Anaconda的安 ...
随机推荐
- 面localStorage用作数据缓存的简易封装
面localStorage用作数据缓存的简易封装 最近做了一些前端控件的封装,需要用到数据本地存储,开始采用cookie,发现很容易就超过了cookie的容量限制,于是改用localStorage,但 ...
- 疯狂了!当游戏爱上MongoDB会怎么样???
导读 前端时间魔兽这个电影我相信大家都看过了哈,作为一个码农,有时候我也会去思考魔兽世界这个游戏背后他的一些设计和实现,比如他用什么数据库.当然真正用什么数据库这个我是不确定的,我们今天的主题是当游戏 ...
- 数据结构 浙大MOOC 笔记二 线性结构
线性表及其表现 第二章的内容是关于三种最基本的数据结构 结合<DDSA>第三章 表.栈和队列做一个总结 首先简单说明一下各个数据结构的特点: 数组:连续存储,遍历快且方便,长度固定,缺点是 ...
- Nagios
什么是Nagios? Nagios是一款用于系统和网络监控的应用程序.它可以在你设定的条件下对主机和服务进行监控, 在状态变差和变好的时候给出告警信息. Nagios更进一步的特征包括: 1. 监控网 ...
- Mosquitto搭建Android推送服务(一)MQTT简介
总体概要: MQTT系列文章分为4部分 1.MQTT简介 2.mosquitto服务器搭建 3.编写Mosquitto的可视化工具 4.使用Mosquitto完成Android推送服务 文章钢要: 对 ...
- 重写jquery的ajax方法
//首先备份下jquery的ajax方法 var _ajax=$.ajax; //重写jquery的ajax方法 $.ajax=function(opt){ //备份opt中error和success ...
- [转]阿里巴巴数据库连接池 druid配置详解
一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...
- 【转】Js获取当前日期时间及格式化操作
(转自:http://www.cnblogs.com/qinpengming/archive/2012/12/03/2800002.html) var myDate = new Date(); myD ...
- Jquery-zTree的用法
[部分函数和属性介绍] 核心:zTree(setting, [zTreeNodes]) 这个函数接受一个JSON格式的数据对象setting和一个JSON格式的数据对象zTreeNodes,从而建立 ...
- Centos7 关闭防火墙(转)
转载地址:http://www.cnblogs.com/silent2012/archive/2015/07/28/4682770.html CentOS 7.0默认使用的是firewall作为防火墙 ...