Python深度學習(附錄A)在Ubuntu上安裝Keras及其依賴

建立深度學習工作環(huán)境的過程相當復雜,包括以下步驟,本附錄將詳細介紹:

  1. 安裝Python科學套件—numpy和scipy—并確保安裝了基本的線性代數子程序庫(BLAS),以便模型在CPU上快速運行。
  2. 安裝兩個額外的包,在使用Keras時非常方便:HDF5(用于保存大型神經網絡文件)和Graphviz(用于可視化神經網絡架構)。
  3. 通過安裝CUDA驅動程序和cuDNN,確保GPU能夠運行深度學習代碼。
  4. 安裝Keras的后端:TensorFlow、CNTK或Theano。
  5. 安裝Keras

似乎是一個艱巨的過程。實際上,唯一困難的部分是設置GPU支持 — 否則,整個過程只需幾個命令就可以完成,只需幾分鐘。
我們假設你有一個新的Ubuntu安裝,有一個NVIDIA GPU可用。在開始之前,確保已經安裝了pip,并且包管理器是最新的:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install python-pip python-dev

Python 2 vs. Python 3
默認情況下,Ubuntu在安裝Python包(如python-pip)時使用Python 2。
如果您希望使用python3,那么您應該使用python3前綴而不是Python。例如:
$ sudo apt-get install python3-pip python3-dev
當您使用pip安裝包時,請記住,在默認情況下,它是以Python 2為目標的。要針對python3,你應該使用pip3:
$sudo pip3 install tensorflow-gpu

A.1安裝Python科學套件

如果您使用Mac,我們建議您通過Anaconda安裝Python科學套件,您可以在www.continuum.io/downloads獲取。注意,這將不包括HDF5和Graphviz,這需要手動安裝。下面是在Ubuntu上手動安裝Python科學套件的步驟:

  1. 安裝BLAS庫(本例中為OpenBLAS),以確保您可以在CPU上運行快速張量操作:
$ sudo apt-get install build-essential cmake git unzip pkg-config libopenblas-dev liblapack-dev
  1. 安裝Python科學套件:Numpy、SciPy和Matplotlib。這是必要的,以在Pytho中執(zhí)行任何類型的機器學習或科學計算,不管你是否正在做深入學習:
$ sudo apt-get install python-numpy python-scipy python-matplotlib python-yaml
  1. 安裝HDF5。這個庫最初由NASA開發(fā),以高效的二進制格式存儲大量的數字數據文件。它將允許您快速和有效的保存您的Keras模型到磁盤:
$ sudo apt-get install libhdf5-serial-dev python-h5py
  1. 安裝Graphviz和pydot-ng,這兩個包可以讓您可視化Keras模型。它們對于運行Keras不是必需的,因此您可以跳過這一步,在需要時安裝這些包。以下是命令:
$ sudo apt-get install graphviz
$ sudo pip install pydot-ng
  1. 安裝在我們的一些代碼示例中使用的附加包:
$ sudo apt-get install python-opencv

A.2 設置GPU支持

使用GPU并不是必須的,但強烈推薦使用GPU。本書中找到的所有代碼示例都可以在筆記本電腦的CPU上運行,但有時您可能需要等待幾個小時才能對模型進行訓練,而在良好的GPU上只需幾分鐘。如果你沒有一個現代的NVIDIA GPU,你可以跳過這一步直接進入a .3部分。
要使用你的NVIDIA GPU進行深度學習,你需要安裝兩件東西:

  • CUDA-您的GPU的一組驅動程序,允許它運行用于并行計算的低級編程語言。
  • cuDNN-高度優(yōu)化的深度學習原語庫。當使用cuDNN并在GPU上運行時,通??梢詫⒛P偷挠柧毸俣忍岣?0%到100%。

TensorFlow依賴于CUDA和cuDNN庫的特定版本。在撰寫本文時,它使用CUDA版本8和cuDNN版本6。請查閱
有關當前推薦的版本的詳細說明,通過訪問TensorFlow網站:www.tensorflow.org/install/install_linux。
如下操作步驟:

  1. CUDA下載。對于Ubuntu(和其他Linux版本),NVIDIA提供了一個現成的包,您可以從https://developer.nvidia.com/cuda-downloads 下載
$ wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
  1. 安裝CUDA。最簡單的方法就是對這個包中使用Ubuntu的apt這將允許您在它們變得可用時,通過apt輕松安裝更新:
$ sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
$ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get install cuda-8-0
  1. 安裝cuDNN:
    a. 注冊一個免費的NVIDIA開發(fā)者賬戶(不幸的是,為了獲得cuDNN下載,這是必要的),并在https://developer.NVIDIA.com/cudnn下載cuDNN(選擇與TensorFlow兼容的cuDNN版本)。像CUDA一樣,NVIDIA也針對不同的Linux提供不同的包——我們將使用Ubuntu 16.04的版本。注意,如果您正在使用EC2安裝,那么您將無法直接將cuDNN存檔下載到您的實例中;相反,將其下載到本地計算機,然后將其上傳到EC2實例(通過scp)。
    b 安裝cuDNN:
$ sudo dpkg -i dpkg -i libcudnn6*.deb
  1. 安裝TensorFlow:
    a. 無論是否支持GPU,都可以使用PyPI使用Pip安裝TensorFlow。下面是沒有GPU支持的命令:
$ sudo pip install tensorflow

b. 下面是GPU支持的安裝TensorFlow指令

$ sudo pip install tensorflow-gpu

A.3 安裝 Theano (可選)

因為您已經安裝了TensorFlow,所以您不必為了運行Keras代碼而安裝Theano。但有時來回切換是有用的,
在構建Keras模型時,從TensorFlow到Theano的切換。
Theano也可以通過PyPI來安裝:

$ sudo pip install theano

如果您正在使用GPU,那么您應該配置Theano來使用您的GPU。您可以使用以下命令創(chuàng)建一個Theano配置文件:

nano ~/.theanorc

然后,用以下配置填寫文件:

[global]
floatX = float32
device = gpu0
[nvcc]
fastmath = True

A.4 安裝 Keras

你可以從PyPI安裝Keras:

$ sudo pip install keras

或者,您可以從GitHub安裝Keras。這樣做將允許您訪問keras/examples文件夾,其中包含許多示例腳本供您學習:

$ git clone https://github.com/fchollet/keras
$ cd keras
$ sudo python setup.py install

現在您可以嘗試運行Keras腳本,例如MNIST示例:

python examples/mnist_cnn.py

請注意,運行這個示例可能需要幾分鐘的時間,因此在驗證了它正常工作之后,可以隨意強制退出(Ctrl-C)。
在至少運行一次Keras之后,可以在這里找到Keras配置文件:
~ / .keras / keras.json。您可以編輯它以選擇Keras運行的后端:tensorflow、theano或cntk。您的配置文件應該是這樣的:

{
"image_data_format": "channels_last",
"epsilon": 1e-07,
"floatx": "float32",
"backend": "tensorflow"
}

當Keras的腳本示例/mnist_cnn.py正在運行,您可以在不同的shell窗口中監(jiān)視GPU的利用率:

$ watch -n 5 NVIDIA-smi -a --display=utilization

你都準備好了!祝賀您——您現在可以開始構建深度學習應用程序了。

實踐上面流程

實踐過程中,我沒有安裝GPU相關的內容。
安裝過程比較蛋疼,出現了一些錯誤。在安裝TensorFlow的時候,使用默認的

sudo pip install tensorflow

出錯了。因此,改用下面的指令

pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.2.0rc0-cp27-none-linux_x86_64.whl

選用了1.2.0rc0的cpu版本(python 2.7),選擇高版本嘗試了下會出錯。
在安裝完成后,可以通過python指令進入python解釋器中,然后執(zhí)行import tensorflow來查看安裝是否有問題。



如果出現了諸如下面的錯誤

>>> import tensorflow
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/__init__.py", line 24, in <module>
    from tensorflow.python import *
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/__init__.py", line 104, in <module>
    from tensorflow.python.platform import test
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/test.py", line 57, in <module>
    import mock                # pylint: disable=g-import-not-at-top,unused-import
  File "/usr/local/lib/python2.7/dist-packages/mock/__init__.py", line 2, in <module>
    import mock.mock as _mock
  File "/usr/local/lib/python2.7/dist-packages/mock/mock.py", line 80, in <module>
    import funcsigs
ImportError: No module named funcsigs

就執(zhí)行

sudo pip install funcsigs

安裝提示中缺失的模塊。


在安裝keras時,直接使用sudo apt-get install keras提示找不到相應的包,改用從github下載后編譯,在編譯過程中報錯如下:

error: Setup script exited with error: library dfftpack has Fortran sources but no Fortran compiler found

提示比較清晰,缺少Fortran編譯器。執(zhí)行以下安裝操作

sudo apt-get install gfortran

編輯完keras后,發(fā)現numpy版本有問題:

RuntimeError: module compiled against API version 0xa but this version of numpy is 0x9
Traceback (most recent call last):

原因主要在于默認的python庫比較老了,即便通過pip命令安裝了新的包,python也會默認導入默認位置的包。
將/usr/lib/python2.7/dist-packages下的numpy刪除即可。
在刪除了numpy后,報出了下面的錯誤:

AttributeError: type object 'NewBase' has no attribute 'is_abstract'

一樣的做法,將/usr/lib/python2.7/dist-packages下的six相關文件刪除。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容