夕蛙のなく頃に

データアナリストとして学んだことや趣味で勉強し始めたIoTをアウトプットする

kerasでpydot・graphvizをインストールしたDocker環境

なにこれ

matsuolab-edu/dl4us で深層学習について勉強を始めています。

その環境をDockerで作りましたが、途中でpydotやgraphvizでエラーが出たのでそれに対応したログです。

実行環境

jupyter/tensorflow-notebook のdockerイメージからコンテナを作成して、進めました。

$ docker run -it -d --name dl4us -p 8889:8888 -v $(shell pwd):/home/jovyan/work jupyter/tensorflow-notebook start-notebook.sh
jovyan@02ce49bea3dd:~$ python --version
Python 3.7.3
jovyan@02ce49bea3dd:~$ pip list | grep tensor
tensorboard          1.13.1  
tensorflow           1.13.1  
tensorflow-estimator 1.13.0  

lesson1でのモデル可視化時にエラー

dl4us/lesson1_sec1_exercise.ipynb at master · matsuolab-edu/dl4us
作成したモデルの結果を可視化するコードが↓です。

from IPython.display import SVG
from tensorflow.python.keras.utils.vis_utils import model_to_dot

SVG(model_to_dot(model, show_shapes=True).create(prog='dot', format='svg'))

実行すると以下のエラーが出ました。

ImportError: Failed to import pydot. You must install pydot and graphviz for `pydotprint` to work.

pydotprintを動かすために、pydot・graphvizが入っていないというエラーです。

pydotは開発が止まっているそうで、python3.5・3.6系では動かないらしいので、pydotplusをインストールします。 また、graphvizもインストールします。

改良したDockerfile

FROM jupyter/tensorflow-notebook

USER root
RUN apt-get dist-upgrade
RUN apt-get update
RUN apt-get install -y build-essential graphviz-dev graphviz pkg-config

USER jovyan
RUN pip install --upgrade pip
RUN pip install graphviz pydotplus

以上3つをインストールしました。
buildとrunはMakefileで管理します。

$ cat Makefile
.PHONY: run
docker-build-tensorflow:
                docker build -t aikiyy/dl4us docker

docker-run-tensorflow:
        docker run \
                -it \
                -d \
                --name dl4us \
                -p 8889:8888 \
                -v $(shell pwd):/home/jovyan/work \
                aikiyy/dl4us \
                start-notebook.sh \
                --NotebookApp.token='' \
                --NotebookApp.password=''