Python深度学习(附录A)在Ubuntu上安装Keras及其依赖

建立深度学习工作环境的过程相当复杂,包括以下步骤,本附录将详细介绍:

  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中执行任何类型的机器学习或科学计算,不管你是否正在做深入学习:
$ sudo apt-get install python-numpy python-scipy python-matplotlib python-yaml
  1. 安装HDF5。这个库最初由NASA开发,以高效的二进制格式存储大量的数字数据文件。它将允许您快速和有效的保存您的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-高度优化的深度学习原语库。当使用cuDNN并在GPU上运行时,通常可以将模型的训练速度提高50%到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开发者账户(不幸的是,为了获得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。您可以使用以下命令创建一个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窗口中监视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解释器中,然后执行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

就执行

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编译器。执行以下安装操作

sudo apt-get install gfortran

编辑完keras后,发现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相关文件删除。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容