MATHGRAM

主に数学とプログラミング、時々趣味について。

[Keras] モデルの可視化をしよう!!

どうも、こんにちは。

めっちゃ天気いいのにPCばっかいじってます。

今回は、kerasのkeras.utils.visualize_utilの中にあるplotモジュールを使って、モデルの可視化をしてみましょう!

まえがき

あえて作図をしなくても、モデルの設計者は構造を理解していることでしょう。じゃなきゃネットワークをつくれませんもんね。笑

しかし僕のように機械学習の勉強を始めたばかりの人にとって、ネットワークの構造を目で確認できるというのはかなり大きいと思います。また第三者にモデルの設計をすぐに理解して欲しい時には、グラフや図がおおいに役立つはずです。人間がいかに視覚的な情報に頼っていることか・・・。

さて、作図を可能にするために1つずつ準備していきましょう.

STEP1

まずはbrewgraphvizをインストールします。

$ brew install graphviz

STEP2

python3の場合はpydot_ngをinstallすることによって, 作図が可能になります.

pydot_ngに関する情報を提供してくれた, nzw様ありがとうございます.

$ pip install pydot_ng

とすると、

Successfully built pydot-ng
Installing collected packages: pydot-ng
Successfully installed pydot-ng-1.0.0

サクッとinstallできると思います.

そして本当に親切なコメントで、ソースのリンクまで貼ってくださいました。 keras/visualize_util.py at master · fchollet/keras · GitHub

こちらで書かれているようにpydot_ngをインストールすれば、そっちを見てくれるようになっているのですね。

try:
    # pydot-ng is a fork of pydot that is better maintained
    import pydot_ng as pydot
except ImportError:
    # fall back on pydot if necessary
    import pydot
if not pydot.find_graphviz():
    raise RuntimeError('Failed to import pydot. You must install pydot'
                       ' and graphviz for `pydotprint` to work.')

常識なのかもしれませんがソースのこういう部分から依存関係を知れると・・・。
大変勉強になりました。

以下はインストール後、実際に画像を生成する部分です。インスールしてしまえば同じなので、もしよろしければ参考にしてください。

STEP3 実際に動かしてみる

今回もmnistのサンプル使います。
エディタでkeras/exampleの中にあるmnist_cnn.pyを開いてください。

まずはモジュールのimport

from keras.utils.visualize_util import plot

そしてmodelを組んだあとにplotします.

plot(model, to_file='model.png')

可視化だけが目的の場合、モデルの設計が終わったらplotを呼び出すだけで十分なようです!

plotにより作成されたグラフがこれ。

f:id:ket-30:20160504172208p:plain

いや〜素晴らしいですね。

まとめ

  • kerasでモデルを視覚化する方法を紹介しました。

まだまだ奥があるkeras。

どんどん解剖してきたいですね。

以上です。