windows系统下的keras(Theano/Tensorflow后端)CPU以及GPU加速环境搭建

时间:2021-03-14 13:57:08

写在前面:博主电脑的操作系统是WIN7 64位操作系统,之前安装了Keras/Theano后端并配置了GPU加速。16年12月谷歌发布Tensorflow1.0,支持windows操作系统,于是想再配置下Keras/Tensorflow环境。Tensorflow在windows系统下对python版本有一定的要求Python3.5以上,博主之前安装Theano的时候用的是Python2.7,于是就需要解决Python多版本共存的问题。编不下去了,开始写正文。。。

用到的软件(windows版本):

Anaconda2、Anaconda3

VS2015(2013)、CUDA8.0、cudnn5.1


1、Python(Anaconda)多版本共存

很多情况下,我们都需要在同一台电脑上安装Python2(Anaconda2)和Python3(Anaconda3),但是一个让人头疼的问题就是pip安装第三库的时候总是出现问题,看了网上有很多教程,把我觉得最实用最简单的一个方法介绍给大家。

首先安装Anaconda2,Anaconda2是集成了很多Python环境,比如spyder、jupyter notebook等。上Anaconda官网https://www.continuum.io/downloads/下载你想要的版本(2对应python2.7,3对应python3.5),install for All Users然后安装在C盘根目录(建议此路径,方便后期的环境变量配置)下。选上下图这两个勾,第一个勾表示把Anaconda2添加到环境变量里,第二个表示设置Anaconda2里的Python设置为系统默认的Python。

windows系统下的keras(Theano/Tensorflow后端)CPU以及GPU加速环境搭建

耐心等待安装完成,安装完成后,进入cmd,输入python,可查看系统默认Python版本,如下图所示:

windows系统下的keras(Theano/Tensorflow后端)CPU以及GPU加速环境搭建

下面介绍在Anaconda2的子环境下安装Anaconda3,上官网下载Anaconda3并安装(博主用的版本是Anaconda3-4.2.0-Windows-x86_64),安装路径如下图所示。

C:\Anaconda2是之前Anaconda2的安装路径,在C:\Anaconda2\envs的文件夹下新建一个名为py3的文件夹(此文件夹用于安装Anaconda3的子环境)

windows系统下的keras(Theano/Tensorflow后端)CPU以及GPU加速环境搭建

此处不勾选这两个选项,因为勾选之后会覆盖之前的环境变量以及系统默认后端。

windows系统下的keras(Theano/Tensorflow后端)CPU以及GPU加速环境搭建

Install,耐心等待安装完成。安装完成之后,进入C:\Anaconda2\envs\py3生成了一系列Anaconda3的安装文件。进入cmd,输入activate py3,激活Anaconda3的子环境(deactivate py3 取消激活),然后输入python,可查看Python版本为Python3.5。在Anaconda3子环境下,pip安装第三方库的话,库文件自动保存在Anaconda3的C:\Anaconda2\envs\py3\Lib\site-packages文件夹下。

windows系统下的keras(Theano/Tensorflow后端)CPU以及GPU加速环境搭建

至此,Python2(Anaconda2)和Python3(Anaconda3)的共存问题已解决。


2、Keras Theano后端环境搭建

1)安装Theano、Keras

参考Keras中文文档的安装教程http://keras-cn.readthedocs.io/en/latest/getting_started/keras_windows/

首先进入cmd,输入conda install git

然后输入pip install --upgrade --no-deps git+git://github.com/Theano/Theano.git

(安装加速开发版本的Theano,因为github上的很多代码都是基于最新开发版本的,所以我们安装最新的版本)

同样,安装加速开发版本的Keras,输入pip install --upgrade --no-deps git+git://github.com/fchollet/keras.git

2)环境变量配置

在我的电脑右键/属性/高级/环境变量/系统变量中的path(注意各路径间用英文分号隔开,anaconda安装路径不同的话,环境变量也做相应的修改)

C:\Anaconda2;C:\Anaconda2\Scripts;C:\Anaconda2\MinGW\bin;C:\Anaconda2\MinGW\x86_64-w64-mingw32\lib;

3)修改默认后端

Keras的默认后端是Tensorflow,所以安装Theano时需要做相应的修改,具体如下:

打开C:\Users\当前用户名\.keras,修改文件夹内的keras.json文件内容为:

{"image_dim_ordering":"th","epsilon":1e-07,"floatx":"float32","backend":"theano"}

如果在路径下找不到.keras文件,建议首先在python环境里import keras一下,再上述路径下来查看。

以上是CPU版本跟GPU版本都需要做的一些准备工作,接下来需要配置一些加速,CPU与GPU略有不同。

4)Theano加速

在 C:\Users\当前用户名\ 下,新建.theanorc.txt文件。

注意:以下的路径都是博主电脑的的安装路径,安装路径不一样的需要做相应的修改。

【CPU版本】.theanorc.txt文件内容如下:


[global]

openmp=True 

device = cpu 

floatX = float32  

allow_input_downcast=True  

[gcc]

cxxflags=-IC:\Anaconda2\MinGW


【GPU版本】

需要先安装Micrsoft Visual Studio 2015(或者2013,因为windows操作系统下配置CUDA加速时需要有VS的环境,VS怎么安装就不赘述了)

然后下载安装windows版本的CUDA8.0,安装路径全部默认,https://developer.nvidia.com/cuda-downloads

windows系统下的keras(Theano/Tensorflow后端)CPU以及GPU加速环境搭建

再然后进行CUDA环境变量的配置:

右键我的电脑/属性/高级/环境变量/系统变量,可以看见安装完CUDA之后系统变量中多了CUDA_PATH和CUDA_PATH_V8.0两个环境变量,再添加以下几个新的环境变量:

变量名 CUDA_SDK_PATH 变量值 C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0 

变量名CUDA_LIB_PATH变量值 %CUDA_PATH%\lib\x64 

变量名CUDA_BIN_PATH变量值 %CUDA_PATH%\bin 

变量名CUDA_SDK_BIN_PATH变量值 %CUDA_SDK_PATH%\bin\win64 

变量名CUDA_SDK_LIB_PATH变量值 %CUDA_SDK_PATH%\common\lib\x64

在Path环境变量后添加;%CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH%;(注意路径之间用英文分号隔开)


测试CUDA安装是否成功

进入cmd,输入nvcc -V,返回CUDA的一些版本信息

windows系统下的keras(Theano/Tensorflow后端)CPU以及GPU加速环境搭建

输入cd C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\extras\demo_suite,cd到这个这个目录下之后有bandwidthTest.exe和deviceQuery.exe两个可执行文件

输入bandwidthTest.exe,返回一大片结果,最后显示Result = PASS

输入deviceQuery.exe ,返回一大片结果,最后显示Result = PASS

windows系统下的keras(Theano/Tensorflow后端)CPU以及GPU加速环境搭建

以上测试全部通过,则CUDA安装成功


再然后下载windows版本的cudnn5.1(这是一个压缩包),需要注册一下,注册之后马上就能下载,https://developer.nvidia.com/cudnn

再再然后配置cudnn加速,这一步很简单,把解压出的bin、include、lib三个文件里的文件复制到CUDA安装路径下对应的文件夹下即可。

把 bin\cudnn64_5.dll 复制到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin 文件夹下(这是博主的安装路径)

把 include\cudnn.h 复制到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include 文件夹下

把 lib\x64\cudnn.lib 复制到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64 文件夹下

至此,cudnn加速完成


然后.theanorc.txt文件内容如下:


[global]

openmp=False 

device = gpu  

optimizer_including=cudnn

floatX = float32  

allow_input_downcast=True  

[lib]cnmem =0.8

[blas]ldflags=

[gcc]cxxflags=-IC:\Anaconda2\MinGW  

[nvcc]

fastmath = True  

flags=-LC:\Anaconda2\libs

compiler_bindir=D:\Microsoft Visual Studio 12.0\VC\bin


5)测试

进入cmd,输入python进入python环境,输入命令import theano,会先debug一下,然后GPU版本显示如下则测试成功,CPU版本未提示错误即可。

windows系统下的keras(Theano/Tensorflow后端)CPU以及GPU加速环境搭建

另外,可通过运行一些Keras例子来进行测试,https://github.com/fchollet/keras/tree/master/examples 随便选择一个例子运行一下即可。


至此,Keras的Theano后端CPU、GPU版本的环境搭建完成。


3、Keras Tensorflow后端环境搭建

参考Tensorflow官方教程 https://www.tensorflow.org/install/install_windows

由于Tensorflow在windows系统下要求python版本3.5以上,前文已经介绍如何安装python3.5的子环境,我们激活子环境,然后再安装tensorflow。,

1)进入cmd,输入activate py3,然后

【CPU版本】输入pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.0-cp35-cp35m-win_x86_64.whl 

【GPU版本】输入 pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.0.0-cp35-cp35m-win_x86_64.whl

一般在安装过程会出现以下这两个错误提示:

第一个问题,No module named theano~~~

这是个很蹊跷的问题,问题的起因在于之前按照官方教程安装的时候,配置了一个名叫PYTHONPATH的环境变量,所以博主在前文有意避免了这个问题,没有配置PYTHONPATH,如果有出现这个问题的朋友,可以删除这个环境变量,再进行尝试。

第二个问题,Found existing installation: setuptools 27.2.0 Cannot remove entries from nonexistent file~~~

这个问题,可以通过输入命令 pip install --upgrade --ignore-installed setuptools,再运行之前的命令代码即可解决

安装过程会持续几分钟,需要从网上下载一些第三方库,所以需要保持网络的畅通无阻。

安装过程结束之后,输入python,进入python环境,输入命令import tensorflow显示如下:

windows系统下的keras(Theano/Tensorflow后端)CPU以及GPU加速环境搭建

(因为前文在配置Theano后端的时候博主已经配置了CUDA加速,所以再安装Tensorflow的时候无需再进行配置),这时能显示了CUDA的一些信息,则tensorflow的GPU环境配置成功。

同样如果是CPU版本的话,import tensorflow不提示错误就行啦,去随便官网找几个例子自己做一下测试。

至此,你就可以在windows系统下运行tensorflow的程序啦~~~


2)更改Keras后端

打开C:\Users\当前用户名\.keras,修改文件夹内的keras.json文件内容为:

{"image_dim_ordering":"tf","epsilon":1e-07,"floatx":"float32","backend":"tensorflow"}


3)测试

运行官网(https://github.com/fchollet/keras/tree/master/examples)的mnist_cnn.py文件即可,此时Keras的后端已经转换成tensorflow后端啦~

windows系统下的keras(Theano/Tensorflow后端)CPU以及GPU加速环境搭建

大功告成!


至此,Python多版本共存问题、Keras Theano后端CPU/GPU环境配置、Keras Tensorflow后端CPU/GPU环境配置全部完成啦~

第一次写博客,思路有点乱,有待改进,写得不对的地方敬请指出,希望对朋友们有些帮助!


最后,贴上几篇参考的博客,写的都很好:

【1】 Win10 TensorFlow(gpu)安装详解  http://blog.csdn.net/sb19931201/article/details/53648615

【2】CUDA 8.0 + VS2013 + win7 x64开发环境搭建 http://blog.csdn.net/lvfeiya/article/details/53325784

【3】CUDA7.5安装和vs2013配置 http://blog.csdn.net/u011314529/article/details/51505029

【4】Windows下Anaconda2(Python2)和Anaconda3(Python3)的共存 http://blog.csdn.net/infin1te/article/details/50445217