Windows環境でKerasで作ったモデルを可視化するTips

昨日、TensorFlow+Kerasで作ったモデルをTensorFlow Servingで動作させるというネタを書いたのですが、今日はその作業中にちょっとハマったことに関するTipsです。

実行環境は下記のとおりです。

  • Windows 10
  • Anaconda 2020.02
  • Python 3.6
  • TensorFlow 1.15
  • Keras 2.2.5

Kerasで作ったモデルを可視化する

昨日の記事で作ったモデルを可視化するには、下記のようなコードを実行します。

import tensorflow as tf
import keras
from IPython.display import SVG
from keras.utils.vis_utils import model_to_dot

model = keras.models.load_model('iris-20200719.h5')

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

基本、これで良いのですが、ちょっとハマったんですよね。

Graphvizが必要

上記のコードを実行する前に、必要なパッケージをインストールしました。

pip install pydot
pip install graphviz

ただ、これだけではGraphVizの実行ファイルが見つからないから、パスを通せというエラー(pydot failed to call GraphViz.Please install GraphViz (https://www.graphviz.org/) and ensure that its executables are in the $PATH.)になります。これは、pipでインストールしたgraphvizが、Pythonラッパーでしかなく、GraphViz本体ではないからです。

ご丁寧にGraphVizのURLまで教えてくれるので、Windows用のGraphVizをインストールし、実行ファイルの存在するパス("C:\Program Files (x86)\Graphviz2.38\bin\" )を通したのですがなぜか、ダメ。Jupyter Notebook自体の再起動とかもしたんですがね…。

で、結局解決したのは下記の方法。

conda install graphviz-python

graphviz-pythonというのもPythonラッパーだと思うんですけど、これをインストールすると、先ほどインストールしたWindows用のGraphVizをアンインスールしても問題なくモデルが可視化できました。AnacondaのどこかにGraphVizの実行ファイルが入っているんだろうか?(特にパスを通すとかもしていない。)

可視化された画像が切れてしまう

いちおう、モデルを可視化した画像が表示されるようになったのですが、このように画像が切れてしまいました。

この問題は、下記のようにdpi=Noneを追加すると解決しました。

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

ということで、こんな感じにモデルの可視化ができると各レイヤーのインプットとアウトプットの型などが分かって便利なので、積極的に使っていきましょう。

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。画像認識モデルを活用したアプリや、生成AIを業務に組み込むためのサービス「Gen2Go」の開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。