基于Tensorflow-gpu+keras的深度学习平台搭建

基于Tensorflow-gpu+keras的深度学习平台搭建

本人最近开始接触深度学习,用matlab跑过最简单的神经网络代码,其它都是小白,也没有学过python,本文将分为5个部分讲述anaconda的安装,CUDA的安装,cuDNN的安装,python环境的安装,pycharm的安装。顺便说下,我的显卡是NVIDIA,因此可以用gpu来加速深度学习。系统则是Win10。

一、Anaconda的安装
这个很容易安装,官网下载3.版本,按照流程就OK。
下边是百度上的安装教程https://jingyan.baidu.com/article/ed15cb1bb7b8431be2698162.html
安装完你可以找到一个叫做Anaconda Navigator的,这是一个可视化的交互环境,可以看到Environment。更常用的是Anaconda Prompt,这是一个命令行的输入窗口。

二、CUDA的安装
在安装CUDA之前,要先看cuDNN的对CUDA的版本支持,https://developer.nvidia.com/rdp/cudnn-archive。笔者先前踩的第一个坑就是搜索CUDA,弹出来的连接是CUDA9.2版本的,要安装的cuDNN的时候才发现没有对应的版本支持,如下图。基于Tensorflow-gpu+keras的深度学习平台搭建于是只能卸载CUDA9.2版本。
安装CUDA的时候应该搜索“CUDA 历史版本”关键词,而不是仅仅CUDA,不然很容易犯笔者上边的错误,下边这个链接是CUDA各个历史版本的下载https://developer.nvidia.com/cuda-toolkit-archive
点击对应的版本即可进入下载页面,Installer Type选exe(local),然后下边选Base Installer。下载后运行exe进行安装,鉴于小白,就还是全部安装吧,完毕后,桌面会出现基于Tensorflow-gpu+keras的深度学习平台搭建,系统变量的PATH可以看到对应的2个路径。

三、cuDNN的安装
按照上述下载支持对应CUDA的版本的cuDNN,找到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0,然后打开cuDNN文件下的Library文件夹,会看到bin、include、lib,打开他们,复制到v9.0对应文件下。切记是复制这三个文件夹下的文件而非文件夹!最后别忘了在环境变量中的用户变量中的Path中添加“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0”

四、python环境的安装。
打开envs文件夹可以看到已经安装好的环境。
基于Tensorflow-gpu+keras的深度学习平台搭建
打开Anaconda Prompt,输入命令conda create -n Test python=3.5,检查环境后会问你是否要安装, 选y。该命令执行 后将在envs文件夹下生成名为Test的文件夹,且python版本为3.5。
基于Tensorflow-gpu+keras的深度学习平台搭建
继续在命令行中输入activate Test,就会进入Test环境下(如下)
(base) C:\Users\用户名>activate Test
(Test) C:\Users\用户名>
输入命令 conda install keras,你会留意到需要附加安装中有tensorflow,注意这个tensorflow是CPU版本的。安装完keras后。输入命令conda uninstall protobuf,卸载掉所有的tensorflow相关的包。再输入命令 conda install tensorflow-gpu,安装gpu版本的tensorflow。如果中间缺少conda uninstall protobuf,尽管你后边安装了gpu版本的tensorflow,很有可能运行程序时还是用cpu。完成安装后可以输入命令conda list 查看该环境下的库。

来到这里,一个Anaconda+CUDA+cuDNN+tensorflow-gpu+keras的深度学习平台就搭建好了,可以应用于图像识别等。

五、pycharm的安装
我这里pycharm安装的是2017版。此处安装应该是没有什么问题的,常规软件安装而已。安装完启动,创建新项目。在Interpreter处应当选用我们刚才安装的环境Test下的python.exe。
基于Tensorflow-gpu+keras的深度学习平台搭建
然后在项目下创建python文件,就可以写代码了。

下一篇我将在此基础上,讲基于keras的图像识别分类,包括从数据集的制作等。