zoukankan      html  css  js  c++  java
  • Ubuntu环境下Anaconda安装TensorFlow并配置Jupyter远程访问

      本文主要讲解在Ubuntu系统中,如何在Anaconda下安装TensorFlow以及配置Jupyter Notebook远程访问的过程。

      在官方文档中提到,TensorFlow的安装主要有以下五种形式:

    1. Pip安装:这种安装形式类似于安装其他的Python安装包。会影响到机器上当前的Python环境,可能会与已安装的某些版本相冲突。
    2. Virtualenv安装:将TensorFlow安装在指定路径下,与当前的Python环境相隔离。
    3. Anaconda安装:以Anaconda为基础安装TensorFlow,和上面的形式相同,也与当前Python环境相隔离。在使用TensorFlow时不影响其他Python应用的使用。
    4. Docker安装:在Docker中隔离安装TensorFlow
    5. 从源码安装:编译源码生成TensorFlow的安装whell文件。

        在安装过程中,尝试了Pip安装和Anaconda安装两种形式。其中Pip安装过程比较简单,按照官方文档中的步骤进行即可。接下来主要描述的是Anaconda安装的过程。

    一、Anaconda和TensorFlow环境

    1、Anaconda安装

      首先去本文最后的Anaconda官方下载地址下载Anaconda安装文件Anaconda2-4.2.0-Linux-x86_64.sh
      下载完成后上传到服务器中,在文件路径下执行如下命令:
    bash Anaconda2-4.2.0-Linux-x86_64.sh

      接下来按照提示设置一些安装路径等参数,Anaconda安装完成后,会安装很多Python中常用的package,比如ipython和jupyter等。

    2、TensorFlow环境配置和切换

      安装完成后,使用如下命令生成一个名为tensorflow的conda环境,根据python版本选择正确的命令执行即可

    # Python 2.7
    $ conda create -n TensorFlow python=2.7
    
    # Python 3.4
    $ conda create -n TensorFlow python=3.4
    
    # Python 3.5
    $ conda create -n TensorFlow python=3.5

      生成conda环境主要是可以自由切换tensorflow环境和普通python环境。
    (1)进入TensorFlow环境
      使用如下命令进入TensorFlow环境:
    source activate tensorflow
      此时界面如图所示,可以看到,在这里会将/usr/local/ml/anaconda2/envs/tensorflow/bin配置到PATH变量前,
      这里写图片描述

    (2)退出tensorflow环境
      使用如下命令可以从tensorflow环境中退出:
    source deactivate
      结果如下,可以看到这两种环境下python的执行路径是不相同的
      
    这里写图片描述

    二、TensorFlow安装

    1、安装

      在官方文档中介绍了在Anaconda中安装TensorFlow有两种方法,一种是使用conda安装,另一种是使用pip安装。在实际操作时发现由于网络原因,稍大一点的安装包就会长时间卡住无响应。可以考虑将需要的安装包下载后以local模式进行安装,在操作中发现pip安装可下载的资源比较多,而conda安装资源比较难找,所以接下来以pip的方式进行安装。
      在conda安装时,可以看到TensorFlow需要依赖的package及版本如下:
      这里写图片描述

      在pip安装模式下,根据安装过程的提升,将对应版本的安装文件从本文最末的Python安装包下载地址中下载到本地。比如在此次安装过程中,我手动下载了几个比较大的安装文件,如下所示

    pip install numpy-1.11.2-cp27-cp27mu-manylinux1_x86_64.whl
    pip install protobuf-3.0.0-py2.py3-none-any.whl
    pip install tensorflow-0.11.0rc0-cp27-none-linux_x86_64.whl

    2、遇到的报错

      安装完成后,在tensorflow环境下执行示例代码时发现了如下的一个报错

    ImportError: libcudart.so.7.0: cannot open shared object file: No such file or directory
    ...
    Error importing tensorflow. Unless you are using bazel

      经排查发现是tensorflow安装文件下载错误导致的。我本想安装的是CPU Only版本,而错误安装了一个GPU enabled版本。
      这里写图片描述

      有关该错,还可以参考官方文档中的详细描述

      重新安装对应版本后错误消失。

    3、验证安装是否正确

      官方文档中提供一段检查tensorflow安装是否正确的代码,如下所示

    $ python
    ...
    >>> import tensorflow as tf
    >>> hello = tf.constant('Hello, TensorFlow!')
    >>> sess = tf.Session()
    >>> print(sess.run(hello))
    Hello, TensorFlow!
    >>> a = tf.constant(10)
    >>> b = tf.constant(32)
    >>> print(sess.run(a + b))
    42
    >>>

      运行结果如下所示:
      这里写图片描述

      到这里TensorFlow已经正确安装,可以继续进行后续学习了。
      但是考虑到TensorFlow安装在虚拟机中,使用不是很方便,接下来考虑配置一个jupyter notebook server服务可以在浏览器中远程访问,更加方便的使用tensorflow。

    4、查看版本和安装路径

      查看TensorFlow的版本:

    >>> import tensorflow as tf
    >>> tf.__version__
    '0.11.0rc2'

      查看TensorFlow安装路径:

    >>> tf.__path__
    ['/usr/local/ml/anaconda2/envs/tensorflow/lib/python2.7/site-packages/tensorflow']

    5、TensorBoard启动和访问

      每次启动TensorBoard时可以按照如下命令进行启动,需要用--logdir参数指定SummaryWriter的事件文件写出路径。

    tensorboard --logdir /usr/local/ml/anaconda2/envs/tensorflow/logs

      启动后,输出如下信息,默认启动端口号为6006,可以使用后面的帮助信息查看如何在启动时指定其他端口。

    Starting TensorBoard 29 on port 6006
    (You can navigate to http://192.168.1.100:6006)

      页面如下:
      这里写图片描述

      更多启动参数可以查看tensorboard的帮助信息

    tensorboard -h

    三、Jupyter Notebook远程访问

      在TensorFlow官方文档中正确安装TensorFlow后,还有一小部分文档描述在tensorflow环境下安装IPython。如果完全按照官方文档的提升安装所需组件后,是无法通过浏览器远程使用TensorFlow的。需要在TensorFlow环境下手动安装Jupyter Notebook并且配置其Server方式。

    1、Jupyter安装

      去Python安装包下载地址中下载Jupyter安装文件,并按安装过程中的依赖提示,下载并安装Jupyter依赖的安装包。

    2、Jupyter Notebook Server配置

      Jupyter安装完成后,需要进行以下一系列操作并配置好配置文件。配置完成后,建议在Chrome浏览器中远程使用,由于浏览器原因遇到的报错会在最后描述。
      参考Jupyter Notebook官方文档中的步骤就可以实现远程访问的功能。
      
    (1)生成配置文件
      使用如下命令

    jupyter notebook --generate-config

      会在~/.jupyter目录下生成一个名为jupyter_notebook_config.py的配置文件

    (2)准备配置的密码
      如下所示,

    In [1]: from notebook.auth import passwd
    In [2]: passwd()
    Enter password:
    Verify password:
    Out[2]: 'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'

      注意保存上面的Out[2]中生成的内容

    (3)生成pem和key文件
      使用如下命令会在当前路径下生成一个mykey.key和一个mycert.pem文件,这两个文件会在后面的配置中使用到。下面的命令会生成有效期为365天的certificate文件。

    openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mykey.key -out mycert.pem

      
    (4)配置配置文件
      这里主要配置第一步中的jupyter_notebook_config.py文件。需要配置的选项如下:

    c.NotebookApp.certfile = u'/absolute/path/to/your/certificate/mycert.pem'
    c.NotebookApp.keyfile = u'/absolute/path/to/your/certificate/mykey.key'
    # Set ip to '*' to bind on all interfaces (ips) for the public server
    c.NotebookApp.ip = '*'
    c.NotebookApp.password = u'sha1:bcd259ccf...<your hashed password here>'
    c.NotebookApp.open_browser = False
    
    # 指定端口号
    c.NotebookApp.port = 8888

      配置完成后,在TensorFlow环境下输入jupyter notebook命令,在远程中打开Chrome浏览器,输入https://ip:8888就可以远程访问并使用TensorFLow了。
      最终效果如下:
      这里写图片描述

    注意事项:
      注意这里最好使用Chrome浏览器,以免遇到莫名其妙的文件。比如我在使用猎豹浏览器时在页面上遇到了404 : Not Found的错误
      这里写图片描述

      在后台输出的日志中显示
    [W 08:33:55.116 NotebookApp] 404 GET
      换到Chrome浏览器后,问题消失。

    主要参考和使用的资源网站:
    1、TensorFlow官方文档
    2、TensorFlow Github地址
    3、jupyter远程访问
    4、Anaconda官方下载地址
    5、Python安装包下载地址

  • 相关阅读:
    c数据结构 顺序表和链表 相关操作
    查找字符串中是否存在指定的字符
    比较两人生日相差多少天
    十进制转化为二进制(栈算法)
    c数据结构栈的基本操作(字符逆序输出)
    Django笔记-登陆、注册(利用cookie实现)
    Django笔记-常见错误整理
    Django笔记-post与get方法相关出错记录
    Django笔记-登陆注册-1
    Django笔记-helloworld
  • 原文地址:https://www.cnblogs.com/wuyida/p/6300210.html
Copyright © 2011-2022 走看看