cuda 实现sift gpu_为Keras提供GPU加速

9c8656cfd562cc8385a334a38bd932d3.png

在刚入坑机器学习时,书上所使用的算法(回归、决策树等)及实例较为简单,一般CPU(中央处理器)的计算能力均能胜任,从而快速实现。但若使用keras(一种基于深度学习框架的高级应用接口)进行深度学习,利用海量的数据反复训练神经网络中成百上千万个参数时,CPU显得捉襟见肘,需要GPU(图形处理器)来实现加速训练。

为什么GPU在深度学习中比CPU更快呢?这是由于两者的设计不同,CPU由专为串行处理而优化的几个部件组成,拥有少量的算术逻辑单元,主要针对不同任务的管理与协调;而GPU则拥有数以千计个算术逻辑单元组成的并行计算架构,专为庞杂而繁重的计算任务而设计。

简单的理解,当对一组数据反复执行同一种计算任务时,GPU更合适,而对同一组数据执行多种不同的任务时,CPU更合适。

2f0aa078315e81cde1518b5a8ecc91ce.png

以本渣渣的实际经验来看,使用GTX970(CUDA1600个)训练2万个样本的卷积神经网络将比A10处理器快20-30倍(视batchsize大小而定)。

1.安装CUDA及cuDNN

GPU加速器于2007年由NVIDIA率先推出,CUDA(Compute Unified Device Architecture)是使GPU能够解决复杂计算问题的并行架构,它包含了CUDA指令集以及并行计算引擎。现在,该架构已应用于GeForce、ION、Quadro以及Tesla等多款产品上,相比AMD而言,支持GPU加速的NVIDIA显卡品种繁多。

因此想要用GPU加速的话基本只要确定显卡是不是NVIDIA品牌的就可以了,当然如果型号过于老旧还是不太确定的话可以前往官网(https://developer.nvidia.com/cuda-gpus)查询,查询列表还能帮助你了解所持显卡的算力,下图仅为部分。

6ed2634bde3deaac881007817c26bc5b.png

在下载CUDA之前首先需确定所持显卡支持的CUDA版本,可通过NVIDA控制面板中的系统信息进行查看。若无法找到NVIDA控制程序请更新显卡驱动,一般最新的驱动程序都能支持较新的CUDA版本。(当前TensorFlow-GPU-1.14版仅支持CUDA10.0,本渣在安装10.1后运行提示找不到cudart64_100.dll,后期图文中请无视具体版本号)

6083c2f293f1979f04f209aebefd1f61.png

进入官网(https://developer.nvidia.com/cuda-toolkit-archive),根据操作系统选择下载支持的CUDA版本。(下文仅演示离线安装)

cf3bd15e8a15d2fa011ffa5bdd509bd6.png

双击下载的可执行程序(cuda_10.0.130_411.31_win10.exe)进入安装引导,经过解压(临时文件可任意存放,会自动删除)及同意许可协议后进入安装选项。安装方式提供'精简'(其实是完整安装,见英文注释'install all')与'自定义'两种。这里推荐'自定义',因为有些组件(比如驱动程序)可能已经安装,且版本更高,以免被覆盖。

10a6b61a51bb30491aedac558da4b601.png

如图选择CUDA列表中的Development,Runtime,Documentation,Samples的四个组件,其他组件可按需安装。(本渣在安装Nsight两个组件时碰到重启错误,可能原因是没有关闭受限状态)

11fa79d75a53e8a708a6baf86afda76c.png


记住安装位置(后面设置环境变量需要用到),点击'下一步'至出现'安装程序已完成'。

7925a1b28c04c2aa9099072d8c28ed69.png

接着下载cuDNN,其全称为NVIDIA CUDA® Deep Neural Network library,是NVIDIA专门针对深度神经网络中的基础操作而设计基于GPU的加速库。

下载需要登录账户,注册过程比较简单,一顿操作后即可完成注册(传送门:https://developer.nvidia.com/rdp/cudnn-download)。登录后,选择与CUDA版本及操作系统对应的cuDNN下载,并将下载的文件解压放置在CUDA安装目录其版本号对应的文件夹下。( C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.0)

a6fc7844c33d5522576f34f5d9aaafa6.png

最后,设置相应的环境变量。右键‘我的电脑’>属性>高级系统设置>环境变量,可以看到已经有了CUDA_PATH、CUDA_PATH_V10_1、NVCUDASAMPLES_ROOT、NVCUDASAMPLES10_1_ROOT这几个环境变量。

975dafda218b8f97d87a236010e0e8f4.png

还需要额外添加如下环境变量:

CUDA_SDK_PATH:C:ProgramDataNVIDIA CorporationCUDA Samplesv10.1
CUDA_LIB_PATH:%CUDA_PATH%libx64
CUDA_BIN_PATH:%CUDA_PATH%bin
CUDA_SDK_BIN_PATH:%CUDA_SDK_PATH%binwin64
CUDA_SDK_LIB_PATH:%CUDA_SDK_PATH%commonlibx64

以及在系统变量PATH下添加:

%CUDA_LIB_PATH%
%CUDA_BIN_PATH%
%CUDA_SDK_LIB_PATH%
%CUDA_SDK_BIN_PATH%; 
C:ProgramFilesNVIDIA GPU Computing ToolkitCUDAv10.1libx64
C:ProgramFilesNVIDIA GPU Computing ToolkitCUDAv10.1bin
C:ProgramDataNVIDIACorporationCUDA Samplesv10.1commonlibx64
C:ProgramDataNVIDIACorporationCUDA Samplesv10.1binwin64

配置完成后,我们可以使用CUDA内置的两个程序来检验是否配置生效。启动cmd,cd到安装目录下...CUDAv10.1extrasdemo_suite,分别执行bandwidthTest.exe和deviceQuery.exe,若如图均返回PASS则说明配置生效。

112cf4e965c98d7ce24540ef1ebfc0e1.png

2.创建虚拟环境

虚拟环境可以理解为针对特定的项目而存在的独立开发运行环境,不同的虚拟环境可以有自己不同的依赖项与工具包,互不影响,同一个工具包在不同的虚拟环境中根据项目需要可以存在不同的版本。

使用'conda create –n 虚拟环境名 python=版本号 anaconda'(若命令末端不输入anaconda则环境中只安装python,无其他工具包),稍等片刻后询问是否继续,键入Y并回车,出现'done'则表示创建完成。可用'conda activate 虚拟环境名'来激活(退出环境则用deactivate),若想删除环境则使用'conda remove-n 虚拟环境名--all'。

75a77adb306851f679caab297b7cfa10.png


使用'conda info –envs'可查看当前所有的虚拟环境及其位置。

26c7a1baddcd55549e3c8f8307346f2a.png

3.安装TensorFlow_GPU版

由于Keras以tensorflow(Google开发的一种深度学习框架)作为后端运算,因此本质上是需要GPU来执行tensorflow的计算操作,对此tensorflow有专门基于GPU的版本。激活待安装的虚拟环境,使用'pip install --upgrade tensorflow-gpu'进行下载与安装。

97568a2204d8e1b5ca813b90cb4a20fe.png

途中可能出现依赖项版本过低的情况,请使用'pip install –upgrade 工具包名称' 逐个升级。

e1ff40ab92149beed24bfc18f6ebafbc.png

安装完后,键入以下命令并运行:

import tensorflow as tf
hello=tf.constant('hello!')
sess=tf.Session()
print(sess.run(hello))

若能成功运行且出现显卡设备信息则表示实现了GPU调用。

最后Keras的安装就很简单了,直接'pip install keras'。

好了,一切准确就绪,快试着让模型飞起来吧!

Ref:

•https://www.nvidia.cn/

•https://blog.csdn.net/qilixuening/article/details/77503631

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

此 sqltransaction 已完成;它再也无法使用_win10笔记本自带office报错无法激活的解决方法...

激活win10笔记本电脑自带office出错怎么办?不少笔记本电脑在出厂的时候就自带windows 10操作系统并且将系统部署完成后就有许多软件集成当中,一般按正常步骤进行激活即可正常使用,不过有用户遇到一个问题,在激活自带office时报错了&#xff…

bat 连续读取两行_Redis底层数据结构解析(BAT大厂必问)

Redis是一个key-value存储系统,现在在各种系统中的使用越来越多,大部分情况下是因为其高性能的特性,被当做缓存使用。Redis由于其丰富的数据结构也可以被应用到其他场景。Redis是一个K-V的非关系型数据库(NoSQL)&#…

smart原则_为什么现在少有人用德鲁克的SMART原则做目标管理了?

互联网平台充斥了各类成功学文章,但大多数鸡汤文只谈坚持,不谈策略。王健林定下一个亿的小目标被网友编成了各种段子,却极少有人去探究他实现目标的过程,用的什么方法。从企业规模来看,我们没有理由说王健林定下的目标…

团队组成五个基本要素_【记录】综合分部宁波分队团队拓展活动

初冬,像一位美丽的、高贵的、矜持的公主,舞动着她那神奇的面纱,送来阵阵凛冽的寒风。今年宁波分队队伍逐渐壮大,从年初的70多人到目前120人,队伍中也迎来了许多00后的小伙伴们,为加强企业文化建设&#xff…

linux delete内存不下降_linux内存分配管理

linux内存分配管理一、前言作为从事与C/C程序开发人员,我们一直需要很好的管理内存,申请和释放;可能很多只知道使用malloc、new去申请,使用free、delete去释放,但是,去根究其内部的原理,可能就不…

android studio 2.3 instant run,android studio 2.3 instant run not working

可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):问题:I have updated android studio from 2.2 to 2.3,then I found Instant run not working.Error while executing: am startservice com.example.codingmaster.te…

和catch的区别_BIO、NIO、AIO 的区别是什么?

BIO、NIO、AIO 的区别是什么?同/异步、阻/非阻塞的区别是什么?文件读写最优雅的实现方式是什么?NIO 如何实现多路复用功能?带着以上这几个问题,跟着芒果一起进入IO的世界吧。在开始之前,我们先来思考一个问…

302状态码_HTTP协议详解(基础概念 方法 状态码 首部 连接 Cookie 新特性 安全)

一 、基础概念URIURI 包含 URL 和 URN。请求和响应报文1. 请求报文2. 响应报文二、HTTP 方法客户端发送的 请求报文 第一行为请求行,包含了方法字段。GET获取资源当前网络请求中,绝大部分使用的是 GET 方法。HEAD获取报文首部和 GET 方法类似&#xff0c…

flask get 参数_用它 5 分钟以后,我放弃用了四年的 Flask

“ 阅读本文大概需要 3 分钟。 ”有一个非常简单的需求:编写一个 HTTP 接口,使用 POST 方式发送一个 JSON 字符串,接口里面读取发送上来的参数,对其中某个参数进行处理,并返回。如果我们使用 Flask 来开发这个接口&…

android sse 人脸识别,基于Android Camera2之openCamera 流程

简介frameworks\base\core\java\android\hardware\camera2Camera2在Android 5.0上首次出现,主要重新定义了一套Camera 的使用接口API,设计思想出现了变化,具体的可自行搜索,此处主要介绍下Camera2的常见类以及使用流程。CameraCap…

vscode编辑python_VSCode+Python开发环境

准备开始转向用VSCode做开发,所以把一些常用的开发环境转移到VSCode上。 这次搭建的是Python3的开发环境。 其他相关博文: 一、测试环境 Windows 10 VSCode v1.11.1 Python v3.6.1 二、安装Visual Studio Code 三、安装Python这一步,记得…

html5 css3浏览器,五大主流浏览器CSS3和HTML5兼容性大比拼

五大主流浏览器CSS3和HTML5兼容性大比拼出处:快科技 2011-05-26 16:15:42 编辑:萧萧[爆料] 收藏文章各大主流浏览器对CSS3和HTML5的支持越来越完善,曾经让多少前端开发人员心碎的IE系也开始拥抱标准。就在前几天,W3C的HTML5社…

一个控制器怎么转发到另外一个控制器_楼宇自动化系统(BAS),DDC,一个最核心的控制器...

楼宇自动化系统(BAS),一个熟悉又陌生的系统楼宇自控系统(BAS系统)设有一个中央监控中心,系统配置一个或多个网络控制器,由多条总线或计算机网络将各种功能的控制器与中央工作站相连,完成对空调、给排水、通风、电梯等子系统的监控…

html封装windows,windows 系统封装,打造一份属于自己的系统!

在电脑的使用过程中,由于我们每个人的使用习惯和使用方式不同,所以我们都会对Windows系统进行自己的设置,尤其是一些搞数码软件的,如果不小心系统坏了,重装系统后,还得一一去进行重新设置,非常麻…

python语言例子_【Python】SimPy的使用示例-Go语言中文社区

使用SimPY进行离散事件仿真 SimPY是一个Python下的第三方库,可以方便的进行离散事件的仿真。仿真速度比较快。下面记录一下我的一点心得,不保证完全正确,供参考。 安装 $ pip install -U simpy pycharm可以再File | Settings | Project: Simu…

vue变量传值_VUE 学习——父组件传值给子组件

在我们编写前端代码时,经常遇到的一种场景,子组件需要使用父组件的值,这种情况下,我们可以使用props帮助我们进行父子组件间的通信。这里我们先模拟一个场景,展示如何使用。场景:在父组件修改值&#xff0c…

matlab 最小二乘法拟合_Scripy实现最小二乘法与股票K线回归

python的Scripy提供了丰富的数学工具,python的科学计算包scipy的里面提供了一个函数,可以求出任意的想要拟合的函数的参数。那就是scipy.optimize包里面的leastsq函数。函数原型是:leastsq(func, x0, args(), DfunNone, full_output0, col_de…

html 调高德地图 导航,在H5页面内通过地址调起高德地图实现导航

项目中用到的一个功能是要通过点击地址来实现打开地图app实现地址导航。如下图:实现思路就是在H5页面内通过点击marker图标然后进行当前位置与页面上地址的路程规划与导航。由于项目中用到的是高德地图,所以这里用到的是调起高德地图APP来实现该功能。首…

.jar文件如何打开_ofd发票文件如何打开

有时候大家查找文件的时候会不会觉得很心烦,因为经常能碰到OFD格式的文件,但是我们却不知道怎么打开,造成了很多困扰。我以前也常常遇到这样的情况,但是最近我发现了一个好办法,迫不及待地想分享给大家了,可…

印刷体是什么意思_家长晒出4年级小学霸课前笔记,字迹堪比“印刷体”,老师都羡慕...

目前,很多小学生都在家里上网课,为了达到最佳学习效果,要提前做好预习工作,尤其是语文这一学科,更需要预习。这不就有一位4年级学霸的家长晒出了孩子日常课前预习笔记。他不仅对文章进行了合理的布置和预习&#xff0c…