前提・実現したいこと
graphvizを用いたモデルの可視化
発生している問題・エラーメッセージ
OSError: `pydot` failed to call GraphViz.Please install GraphViz (https://www.graphviz.org/) and ensure that its executables are in the $PATH.
該当のソースコード
python
1from graphviz import Digraph 2import keras 3from keras.datasets import mnist 4from keras.models import Sequential 5from keras.layers.core import Dense, Activation 6from keras.utils import np_utils 7 8# kerasのMNISTデータの取得 9 10(X_train, y_train), (X_test, y_test) = mnist.load_data() 11 12 13# 配列の整形と,色の範囲を0-255 -> 0-1に変換 14X_train = X_train.reshape(60000, 784) / 255 15X_test = X_test.reshape(10000, 784) / 255 16 17 18# 正解ラベルをダミー変数に変換 19y_train = np_utils.to_categorical(y_train) 20y_test = np_utils.to_categorical(y_test) 21 22# ネットワークの定義 23 24model = Sequential([ 25 Dense(512, input_shape=(784,)), 26 Activation('sigmoid'), 27 Dense(10), 28 Activation('softmax') 29 ]) 30 31# 損失関数,最適化アルゴリズムなどの設定 + モデルのコンパイルを行う 32model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy']) 33 34# 学習処理の実行 -> 変数histに進捗の情報が格納される 35# validation_split=0.1 ---> 0.1(10%)の訓練データが交差検証に使われる 36hist = model.fit(X_train, y_train, batch_size=200, verbose=1, epochs=3, validation_split=0.1) 37 38# 予測 39score = model.evaluate(X_test, y_test, verbose=1) 40print("") 41print('test accuracy : ', score[1]) 42 43import matplotlib.pyplot as plt 44loss = hist.history['loss'] 45val_loss = hist.history['val_loss'] 46 47# lossのグラフ 48plt.plot(range(3), loss, marker='.', label='loss') 49plt.plot(range(3), val_loss, marker='.', label='val_loss') 50plt.legend(loc='best', fontsize=10) 51plt.grid() 52plt.xlabel('epoch') 53plt.ylabel('loss') 54plt.show() 55 56acc = hist.history['acc'] 57val_acc = hist.history['val_acc'] 58 59# accuracyのグラフ 60plt.plot(range(3), acc, marker='.', label='acc') 61plt.plot(range(3), val_acc, marker='.', label='val_acc') 62plt.legend(loc='best', fontsize=10) 63plt.grid() 64plt.xlabel('epoch') 65plt.ylabel('acc') 66plt.show() 67 68# 該当のエラー箇所↓ 69from keras.utils import plot_model 70plot_model(model, to_file='./model.png') 71
試したこと
graphvizを再インストールし、パスを設定しなおす。
エラー箇所2行を以下のように書き換えてみる
Python
1import pydot_ng as pydot 2from keras.utils import plot_model 3pydot.find_graphviz() 4plot_model(model, to_file='model.png')
補足情報(FW/ツールのバージョンなど)
>dot -v dot - graphviz version 2.38.0 (20140413.2041) libdir = "C:\graphviz\release\bin" Activated plugin library: gvplugin_dot_layout.dll Using layout: dot:dot_layout Activated plugin library: gvplugin_core.dll Using render: dot:core Using device: dot:dot:core The plugin configuration file: C:\graphviz\release\bin\config6 was successfully loaded. render : cairo dot fig gd gdiplus map pic pov ps svg tk vml vrml xdot layout : circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi textlayout : textlayout device : bmp canon cmap cmapx cmapx_np dot emf emfplus eps fig gd gd2 gif gv imap imap_np ismap jpe jpeg jpg metafile pdf pic plain plain-ext png pov ps ps2 svg svgz tif tiff tk vml vmlz vrml wbmp xdot xdot1.2 xdot1.4 loadimage : (lib) bmp eps gd gd2 gif jpe jpeg jpg png ps svg
conda list 実行結果
pydot 1.4.1 pypi_0 pypi pydot-ng 2.0.0 pypi_0 pypi pydotplus 2.0.2 pypi_0 pypi python-graphviz 0.13.2 pypi_0 pypi
あなたの回答
tips
プレビュー