Chainerが出力するネットワーク構造図をGraphvizで見る
ChainerのTrainerが出力するネットワーク構造図(dotファイル)をGraphvizで可視化してみました。
目次
Graphvizとは
dot言語で書かれたグラフをpngなどに変換して可視化するツールです。Chainerのトレーナーがネットワーク構造(計算グラフ)をdot形式でファイルに出力してくれますので、それをpngなどにして見ることができます。
実行環境は、Windows10 64bit、Python 3.7.1です。
Graphvizのインストール
Graphvizは独立したアプリケーションですので、個別にインストールする必要があります。
まず、公式サイト からインストーラーをダウンロードします。Windows用のstableなものとしてmsi版とzip版が置かれています。私はmsi版(インストーラー版)をダウンロードしました。
ダウンロードしたmsiファイルを実行するとインストール用のダイアログが開くので、指示に従ってインストールします。
gvedit.exeを起動してdotファイルを読み込むと、dot言語で記述されたグラフがヴィジュアルに表示されます。
以前のChainerのチュートリアル でTrainerがモデルをdotで出力するようにしていましたので、そのdotファイルをgvedit.exeで読み込んでみます。すると、こんな感じに表示されます。

PythonからGraphvizを使う
PythonからGraphvizを使ってみます。
まずpydotというPythonでGraphvizのインターフェースをするパッケージがありますので、インストールしてみます。
> pip install pydot
pydotがGraphvizを呼び出すのですが、Graphvizの実行ファイルのパスが環境変数PATHに入っていないとエラーになります。ということで、Graphvizのインストール先フォルダを探してPATHに追加します。
私の場合は
C:\Program Files (x86)\Graphviz2.38\bin
でした。
PATHの編集画面は、Windowsの検索窓にpathなどと入力すると「システム環境変数の編集」というような項目が出ますので、そのあたりで探してください。
それでは、コマンドラインでPythonを起動して試してみます。
>>> import pydot
>>> f = pydot.graph_from_dot_file('cg.dot')
>>> f[0].write_png('cg.png')
これでcg.dotというファイルからcg.pngが作成されます。

Jupyter notebookからGraphvizを使う
Jupyter notebookでも試してみます。

IPythonでインラインに表示できるのがうれしいですね。
公開日
広告
Chainerカテゴリの投稿
- ChainerCVで使える画像のデータ拡張
- ChainerCVで画像を出力する方法
- ChainerCVのResNetを使う
- ChainerCVのSSDに学習させてみた
- ChainerCVのデモンストレーションプログラムを読んでみた
- ChainerCVのデモンストレーションプログラムを読んでみた(推論編)
- Chainerが出力するネットワーク構造図をGraphvizで見る
- Chainerで数字を分類してみた
- ChainerのSSDのデモで物体検出をしてみる
- Chainerのチュートリアルを試してみた
- Chainerのチュートリアルを試してみた(ChainerCVでデータ拡張編)
- Chainerのチュートリアルを試してみた(データ拡張編)
- Chainerのチュートリアルを試してみた(トレーナー編)
- Chainerのチュートリアルを試してみた(畳み込みを深くする編)
- Chainerのチュートリアルを試してみた(畳み込み編)
- Chainerのデータセットの作り方(ラベル付き画像編)
- VoTTのPascal VOC出力をChainerCVのデータセットとして読み込んでみた