1. 程式人生 > >windows系統下的keras(Theano/Tensorflow後端)CPU以及GPU加速環境搭建

windows系統下的keras(Theano/Tensorflow後端)CPU以及GPU加速環境搭建

寫在前面:博主電腦的作業系統是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。


耐心等待安裝完成,安裝完成後,進入cmd,輸入python,可檢視系統預設Python版本,如下圖所示:


下面介紹在Anaconda2的子環境下安裝Anaconda3,上官網下載Anaconda3並安裝(博主用的版本是Anaconda3-4.2.0-Windows-x86_64),安裝路徑如下圖所示。

C:\Anaconda2是之前Anaconda2的安裝路徑,在C:\Anaconda2\envs的資料夾下新建一個名為py3的資料夾(此資料夾用於安裝Anaconda3的子環境)

此處不勾選這兩個選項,因為勾選之後會覆蓋之前的環境變數以及系統預設後端。


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資料夾下。


至此,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


再然後進行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的一些版本資訊


輸入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


以上測試全部通過,則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版本未提示錯誤即可。


另外,可通過執行一些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顯示如下:


(因為前文在配置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後端啦~


大功告成!

至此,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