Windows平台深度学习入门指南
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Windows平台深度学习入门指南
本文从最基本的依赖项开始,依次配置了VS 2015、Anaconda 4.4.0、CUDA 8.0.61 和cuDNN v5.1 等基本环境,然后再从Keras 出发安装Theano、TensorFlow 和CNTK 以作为其后端。
在完成配置深度学习框架后,本文分别利用这三个框架作为Keras 后端在CPU 和GPU 上训练了一个标准的卷积神经网络,完成该简单的卷积网络也就意味着我们完成了深度学习环境的配置。
目前有很多帮助我们在Linux 或Mac OS 上构建深度学习(DL)环境的指导文章,但很少有文章完整地叙述如何高效地在Windows 10 上配置深度学习开发环境。
此外,很多开发者安装Windows 和Ubuntu 双系统或在Windows 上安装虚拟机以配置深度学习环境,但对于入门者来说,我们更希望还是直接使用Windows 直接配置深度学习环境。
因此,本文作者Phil Ferriere 在GitHub 上发布了该教程,他希望能从最基本的环境变量配置开始一步步搭建Keras 深度学习开发环境。
如果读者希望在Windows 10 上配置深度学习环境,那么本文将为大家提供很多有利的信息。
01 依赖项
下面是我们将在Windows 10(Version 1607 OS Build 14393.222)上配置深度学习环境所需要的工具和软件包:
1.Visual Studio 2015 Community Edition Update 3 w. Windows Kit 10.0.10240.0:用
于其C/C++编译器(而不是IDE)和SDK,选择该确定的版本是因为CUDA 8.0.61 所支持的Windows 编译器。
2.Anaconda (64-bit) w. Python
3.6 (Anaconda3-
4.4.0) [for Tensorflow support] or
Python 2.7 (Anaconda2-4.4.0) [no Tensorflow support] with MKL:Anaconda 是一个开源的Python 发行版本,其包含了conda、Python、NumPy、SciPy 等180 多个科学包及其依赖项,是一个集成开发环境。
MKL 可以利用CPU 加速许多线性代数运算。
3.CUDA 8.0.61 (64-bit):CUDA 是一种由NVIDIA 推出的通用并行计算架构,该架构使
GPU 能够解决复杂的计算问题,该软件包能提供GPU 数学库、显卡驱动和CUDA 编译器等。
4.cuDNN v
5.1 (Jan 20, 2017) for CUDA 8.0:用于加速卷积神经网络的运算。
5.Keras 2.0.5 with three different backends: Theano 0.9.0, Tensorflow-gpu 1.2.0, and
CNTK 2.0:Keras 以Theano、Tensorflow 或CNTK 等框架为后端,并提供深度学习高级API。
使用不同的后端在张量数学计算等方面会有不同的效果。
02 硬件
∙Dell Precision T7900, 64GB RAM:Intel Xeon E5-2630 v4 @ 2.20 GHz (1 processor,
10 cores total, 20 logical processors)
∙NVIDIA GeForce Titan X, 12GB RAM:Driver version: 372.90 / Win 10 64
03 安装步骤
我们可能喜欢让所有的工具包和软件包在一个根目录下(如e:\toolkits.win),所以在下文只要看到以e:\toolkits.win 开头的路径,那么我们可能就需要小心不要覆盖或随意更改必要的软件包目录。
∙Visual Studio 2015 Community Edition Update 3 w. Windows Kit 10.0.10240.0∙下载地址:https:///vs/older-downloads
运行下载的软件包以安装Visual Studio,可能我们还需要做一些额外的配置:
基于我们安装VS 2015 的地址,需要将C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin 添加到PATH 中。
∙定义系统环境变量(sysenv variable)INCLUDE 的值为C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
∙定义系统环境变量(sysenv variable)LIB 的值为C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64;C:\Program Files (x86)\Windows
Kits\10\Lib\10.0.10240.0\ucrt\x64
Anaconda 4.4.0 (64-bit) (Python 3.6 TF support / Python 2.7 no TF support))
本教程最初使用的是Python 2.7,而随着TensorFlow 可作为Keras 的后端,我们决定使用Python 3.6 作为默认配置。
因此,根据我们配置的偏好,可以设置e:\toolkits.win\anaconda3-4.4.0 或e:\toolkits.win\anaconda2-4.4.0 为安装Anaconda 的文件夹名。
∙Python 3.6 版本的Anaconda 下载地址:https://repo.continuum.io/archive/Anaconda3-4.4.0-Windows-x86_64.exe ∙Python 2.7 版本的Anaconda 下载地址:https://repo.continuum.io/archive/Anaconda2-4.4.0-Windows-x86_64.exe
运行安装程序完成安装:
如上,本教程选择了第二个选项,但不一定是最好的。
定义一下变量并更新PATH:
∙定义系统环境(sysenv variable)变量PYTHON_HOME 的值为e:\toolkits.win\anaconda3-4.4.0
∙添加%PYTHON_HOME%, %PYTHON_HOME%\Scripts 和%PYTHON_HOME%\Library\bin 到PATH 中
创建dlwin36 conda 环境
在安装Anaconda 后,打开Windows 命令窗口并执行:
1.#使用以下命令行创建环境
2.$ conda create --yes -n dlwin36 numpyscipymkl-service m2w64-toolchain
libpythonjupyter
3.# 使用以下命令行激活环境:
4.# > activate dlwin36
5.#
6.# 使用以下命令行关闭环境:
7.# > deactivate dlwin36
8.#
9.# * for power-users using bash, you must source
10.#
如上所示,使用active dlwin36 命令激活这个新的环境。
如果已经有了旧的dlwin36 环境,可以先用condaenv remove -n dlwin36 命令删除。
既然打算使用GPU,为什么还要安装
CPU 优化的线性代数库如MKL 呢?在我们的设置中,大多数深度学习都是由GPU 承担的,这并没错,但CPU 也不是无所事事。
基于图像的Kaggle 竞赛一个重要部分是数据增强。
如此看来,数据增强是通过转换原始训练样本(利用图像处理算子)获得额外输入样本(即更多的训练图像)的过程。
基本的转换比如下采样和均值归0 的归一化也是必需的。
如果你觉得这样太冒险,可以试试额外的预处理增强(噪声消除、直方图均化等等)。
当然也可以用GPU 处理并把结果保存到文件中。
然而在实践过程中,这些计算通常都是在CPU 上平行执行的,而GPU 正忙于学习深度神经网络的权重,况且增强数据是用完即弃的。
因此,我们强烈推荐安装MKL,而Theanos 用BLAS 库更好。
CUDA 8.0.61 (64-bit)
从英伟达网站下载CUDA 8.0 (64-bit):https:///cuda-downloads
选择合适的操作系统:
下载安装包:
运行安装包,安装文件到e:\toolkits.win\cuda-8.0.61 中:
完成安装后,安装包应该创建了一个名为CUDA_PATH 的系统环境变量(sysenv variable),并且已经添加了%CUDA_PATH%\bin 和%CUDA_PATH%\libnvvp 到PATH 中。
检查是否真正添加了,若CUDA 环境变量因为一些原因出错了,那么完成下面两个步骤:
∙定义名为CUDA_PATH 的系统环境变量的值为e:\toolkits.win\cuda-8.0.61
∙添加%CUDA_PATH%\bin 和%CUDA_PATH%\libnvvp 到PATH 中
cuDNN v5.1 (Jan 20, 2017) for CUDA 8.0
根据英伟达官网「cuDNN 为标准的运算如前向和反向卷积、池化、归一化和激活层等提供高度调优的实现」,它是为卷积神经网络和深度学习设计的一款加速方案。
cuDNN 的下载地址:https:///rdp/cudnn-download
我们需要选择符合CUDA 版本和Window 10 编译器的cuDNN 软件包,一般来说,cuDNN 5.1 可以支持CUDA 8.0 和Windows 10。
下载的ZIP 文件包含三个目录(bin、include、lib),抽取这三个的文件夹到%CUDA_PATH% 中。
安装Keras 2.0.5 和Theano0.9.0 与libgpuarray
运行以下命令安装libgpuarray 0.6.2,即Theano 0.9.0 唯一的稳定版:
1.(dlwin36) $ conda install pygpu==0.6.2 nose
2.#下面是该命令行安装的效果
3.Fetching package metadata ...........
4.Solving package specifications: .
5.Package plan for installation in environment
e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36:
6.The following NEW packages will be INSTALLED:
7. libgpuarray: 0.6.2-vc14_0 [vc14]
8. nose: 1.3.7-py36_1
9. pygpu: 0.6.2-py36_0
10.P roceed ([y]/n)? y
输入以下命令安装Keras 和Theano:
1.(dlwin36) $ pip install keras==
2.0.5
2.#下面是该命令行安装的效果
3.Collecting keras==2.0.5
4.Requirement already satisfied: six in
e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from keras==2.0.5)
5.Collecting pyyaml (from keras==2.0.5)
6.Collecting theano (from keras==2.0.5)
7.Requirement already satisfied: scipy>=0.14 in
e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from theano->keras==2.0.5)
8.Requirement already satisfied: numpy>=1.9.1 in
e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from theano->keras==2.0.5)
9.Installing collected packages: pyyaml, theano, keras
10.S uccessfully installed keras-2.0.5 pyyaml-3.12 theano-0.9.0
安装CNTK 2.0 后端
根据CNTK 安装文档,我们可以使用以下pip 命令行安装CNTK:
1.(dlwin36) $ pip install
https://cntk.ai/PythonWheel/GPU/cntk-2.0-cp36-cp36m-win_amd64.whl
2.#下面是该命令行安装的效果
3.Collecting cntk==2.0 from
https://cntk.ai/PythonWheel/GPU/cntk-2.0-cp36-cp36m-win_amd64.whl
4. Using cached
https://cntk.ai/PythonWheel/GPU/cntk-2.0-cp36-cp36m-win_amd64.whl
5.Requirement already satisfied: numpy>=1.11 in
e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from cntk==2.0)
6.Requirement already satisfied: scipy>=0.17 in
e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from cntk==2.0)
7.Installing collected packages: cntk
8.Successfully installed cntk-2.0
该安装将导致在conda 环境目录下额外安装CUDA 和cuDNN DLLs:
1.(dlwin36) $ cd E:\toolkits.win\anaconda3-4.4.0\envs\dlwin36
2.(dlwin36) $ dir cu*.dll
3.#下面是该命令行安装的效果
4.Volume in drive E is datasets
5.Volume Serial Number is 1ED0-657B
6.Directory of E:\toolkits.win\anaconda3-4.4.0\envs\dlwin36
7.06/30/2017 02:47 PM 40,744,896 cublas64_80.dll
8.06/30/2017 02:47 PM 366,016 cudart64_80.dll
9.06/30/2017 02:47 PM 78,389,760 cudnn64_5.dll
10.06/30/2017 02:47 PM 47,985,208 curand64_80.dll
11.06/30/2017 02:47 PM 41,780,280 cusparse64_80.dll
12. 5 File(s) 209,266,160 bytes
13.0 Dir(s) 400,471,019,520 bytes free
这个问题并不是因为浪费硬盘空间,而是安装的cuDNN 版本和我们安装在c:\toolkits\cuda-8.0.61 下的cuDNN 版本不同,因为在conda 环境目录下的DLL 将首先加载,所以我们需要这些DLL 移除出%PATH% 目录:
1.(dlwin36) $ md discard & move cu*.dll discard
2.#下面是该命令行安装的效果
3.E:\toolkits.win\anaconda3-
4.4.0\envs\dlwin36\cublas64_80.dll
4.E:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\cudart64_80.dll
5.E:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\cudnn64_5.dll
6.E:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\curand64_80.dll
7.E:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\cusparse64_80.dll
8. 5 file(s) moved.
安装TensorFlow-GPU 1.2.0 后端
运行以下命令行使用pip 安装TensorFlow:
1.(dlwin36) $ pip install tensorflow-gpu==1.
2.0
2.#以下是安装效果
3.Collecting tensorflow-gpu==1.2.0
4. Using cached tensorflow_gpu-1.2.0-cp36-cp36m-win_amd64.whl
5.Requirement already satisfied: bleach==1.5.0 in
e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from tensorflow-gpu==1.2.0)
6.Requirement already satisfied: numpy>=1.11.0 in
e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from tensorflow-gpu==1.2.0)
7.Collecting markdown==2.2.0 (from tensorflow-gpu==1.2.0)
8.Requirement already satisfied: wheel>=0.26 in
e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from
tensorflow-gpu==1.2.0)
9.Collecting protobuf>=3.2.0 (from tensorflow-gpu==1.2.0)
10.C ollecting backports.weakref==1.0rc1 (from tensorflow-gpu==1.2.0)
ing cached backports.weakref-1.0rc1-py3-none-any.whl
12.C ollecting html5lib==0.9999999 (from tensorflow-gpu==1.2.0)
13.C ollecting werkzeug>=0.11.10 (from tensorflow-gpu==1.2.0)
ing cached Werkzeug-0.12.2-py2.py3-none-any.whl
15.R equirement already satisfied: six>=1.10.0 in
e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from
tensorflow-gpu==1.2.0)
16.R equirement already satisfied: setuptools in
e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages\setuptools-27.2.
0-py3.6.egg (from protobuf>=3.2.0->tensorflow-gpu==1.2.0)
17.I nstalling collected packages: markdown, protobuf, backports.weakref, html5lib,
werkzeug, tensorflow-gpu
18.Found existing installation: html5lib 0.999
19. DEPRECATION: Uninstalling a distutils installed project (html5lib) has been
deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
20. Uninstalling html5lib-0.999:
21. Successfully uninstalled html5lib-0.999
22.S uccessfully installed backports.weakref-1.0rc1 html5lib-0.9999999
markdown-2.2.0 protobuf-3.3.0 tensorflow-gpu-1.2.0 werkzeug-0.12.2使用conda 检查安装的软件包
完成以上安装和配置后,我们应该在dlwin36 conda 环境中看到以下软件包列表:
为了快速检查上述三个后端安装的效果,依次运行一下命令行分别检查Theano、TensorFlow 和CNTK 导入情况:
1.(dlwin36) $ python -c "import theano; print('theano: %s, %s' %
(theano.__version__, theano.__file__))"。