在 Docker 环境中安装 TensorFlow

要学习 TensorFlow框架,得先在本地搭建环境,但是 TF 本地环境有时很难搭建的起来,因为依赖的包及版本很容易出现问题,所以,这里使用Docker搭建,比使用Conda更容易。

一、下载镜像

默认情况下,我们本地已经安装好了 Docker 环境,然后使用命令拉取 TensorFlow 镜像,这里选取得是tensorflow/tensorflow:latest-py3-jupyter 版本,集成了notebooks,方便我们后边直接编程。

docker pull tensorflow/tensorflow:latest-py3-jupyter

二、启动容器

下载镜像到本地之后,我们使用如下命令创建容器:

docker run -it  -v /Users/kaiyiwang/Code/ai/notebooks:/tf/notebooks -p 8888:8888 tensorflow/tensorflow:latest-py3-jupyter

命令说明

  • docker run 运行镜像,
  • --name 为容器创建别名,
  • -it 保留命令行运行,
  • -p 8888:8888 将本地的8888端口 http://localhost:8888/ 映射,
  • -v /Users/kaiyiwang/Code/ai/notebooks:/tf/notebooks 将本地的/Users/kaiyiwang/Code/ai/notebooks文件夹挂载到新建容器的/tf/notebooks下(这样创建的文件可以保存到本地/Users/kaiyiwang/Code/ai/notebooks
  • tensorflow/tensorflow:latest-py3-jupyter为指定的镜像,默认标签为latest-py3-jupyter(即tensorflow/tensorflow:latest-py3-jupyter)

注意:这里映射容器里的路径必须为 /tf/ 下面的,否则notebooke 打开会找不到对应宿主机的路径。

三、开启TensorFlow容器

file

可以直接从命令行中右键打开连接,或者在浏览器中输入http://127.0.0.1:8888,然后将命令行中的token粘贴上去。

file

四、进入容器

我们可以在另一个窗口中查看该容器的进程:

docker ps

结果:

➜  ~ docker ps
CONTAINER ID        IMAGE                                      COMMAND                  CREATED             STATUS              PORTS                    NAMES
bf9d05e88501        tensorflow/tensorflow:latest-py3-jupyter   "bash -c 'source /et…"   9 hours ago         Up 9 hours          0.0.0.0:8888->8888/tcp   optimistic_elion

我们可以看到该容器的ID前四位是:bf9d,进入到该容器:

sudo docker exec -it bf9d /bin/bash

安装图像包

因为在后期的学习中,我们还需要安装几个需要的包,所以,这里也顺便安装一下:

pip3 install scipy===1.2.1
pip3 install Pillow===6.0.0

注意,这里一定要选对各包的版本,否则会出现一些意想不到的问题,比如如下代码中调用 scipy.misc.imresize 方法进行图片处理,但是会报错,因为版本安装错误。

my_image = scipy.misc.imresize(image, size=(64, 64)).reshape((1, 64 * 64 * 3)).T

异常:

AttributeError: module 'scipy.misc' has no attribute 'imresize'

默认安装的最新版本:

# pip list
Pillow       6.2.1
scipy        1.3.2

需要降版本到:

scipy = 1.2.1
Pillow = 6.0.0

参考文章 TensorFlow官方文档

为者常成,行者常至