【Watson Studioメモ】Watson StudioのJupyter Notebookでplot_modelを使えるようにする


はじめに

Watson StudioのJupyter Notebookは、普通に使うライブラリはほぼ全部最初から入っていて大変便利なのですが、plot_modelがいつも使えなくて苦労します。
一番簡単な手順がわかったので備忘録としてメモしておきます。

現象

例えば、次のようなコードを初期状態で実行するとエラーになります。

%matplotlib inline
import warnings
warnings.filterwarnings('ignore')

from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import RMSprop

# モデル定義
model = Sequential()
model.add(Dense(64, activation='relu', input_dim=784))
model.add(Dense(10, activation='softmax'))

# モデルのグラフ化
from keras.utils import plot_model
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np

plot_model(model, to_file='sample-model1.png', show_shapes=True, show_layer_names=True)
im = Image.open('sample-model1.png')
plt.figure(figsize=(8,8))
plt.axis('off')
plt.imshow(np.array(im))
plt.show()

エラーの様子

しかし、メッセージの指示に従いpipコマンドでpydotgraphvizを追加導入してもエラーは消えず、いつも悩むのでした。

対策

わかってしまえば簡単なのですが、Watson StudioのJupyter Notebook上で、次のコマンドを実行します。

graphvizに関しては、pipコマンドとcondaコマンドを両方実行するのがポイントです。

# 必要モジュールの追加導入
!pip install graphviz
!conda install graphviz
!pip install pydot

graphvizがちゃんと動いているかどうかのテストは以下のコマンドで可能です。

# 動作確認
!dot -V

これに対して次のような結果が返ってくればテストOKです。

逆にセットアップがうまくいっていない場合は、次のコマンドでなんらかのエラーメッセージが表示されます。

dot - graphviz version 2.40.1 (20161225.0304)

実行結果

テストがOKの状態で上記のプログラムを再度動かすと、めでたくネットワーク図表示がされるようになります。