美文网首页Machine Learning
Python深度学习(附录A)在Ubuntu上安装Keras及其

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

作者: 凤凰花开那一天 | 来源:发表于2018-09-20 14:10 被阅读86次

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

    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相关文件删除。

    相关文章

      网友评论

        本文标题:Python深度学习(附录A)在Ubuntu上安装Keras及其

        本文链接:https://www.haomeiwen.com/subject/rndgnftx.html