FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

TensorFlow+Kerasに入門(1. 環境構築+サンプルコード実行)

FPGAの部屋のmarseeさんの記事を見て、TensorFlow+Kerasに入門してみた。 というかmarseeさんの記事で掲載されているソースコードをほとんどCopy & Pasteして実行してみているだけだが...

f:id:msyksphinz:20180701130913p:plain

TensorFlow+Kerasの実行環境にはVirtualBox上で動作させるUbuntu 18.04 LTSを使用した。Jupyter Notebookを立ち上げて、ポートを指定してWindows上のブラウザに転送して操作する。

$ sudo apt install -y python-pip
$ sudo pip3 install --upgrade tensorflow keras jupyter matplotlib pandas
$ jupyter-notebook --ip=* --no-browser &

これで、VirtualBox上の設定で8888ポートを別のポートにフォワーディングし、Windows上からアクセスしてJupyter Notebookが操作できるようになった。

少しは待った点としては、PydotがPython 3.x系では開発が中止されているらしく、サンプルプログラムが正しく実行されなかった。 それ以外は、サンプルプログラムと、MNISTのニューラルネットワークのモデルは正しく動作しているようだった。

以下の keras.utils.vis_utils import plot_modelから呼び出したplot_modelが正しく動作しないようだ。これがあるとネットワークの構成などをちゃんと表示してくれるらしいのだが...

# 学習済みモデルの読み込み

from keras.models import load_model

model = load_model('mnist_cnn10_model.h5')
model_list = model.get_weights()
print(model_list)

from keras.utils.vis_utils import plot_model
model.summary()
plot_model(model, show_shapes=True, to_file='./model.png')
  • 実行結果
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-23-e3a6ae28afe6> in <module>()
      9 from keras.utils.vis_utils import plot_model
     10 model.summary()
---> 11 plot_model(model, show_shapes=True, to_file='./model.png')

/usr/local/lib/python3.6/dist-packages/keras/utils/vis_utils.py in plot_model(model, to_file, show_shapes, show_layer_names, rankdir)
    131             'LR' creates a horizontal plot.
    132     """
--> 133     dot = model_to_dot(model, show_shapes, show_layer_names, rankdir)
    134     _, extension = os.path.splitext(to_file)
    135     if not extension:

/usr/local/lib/python3.6/dist-packages/keras/utils/vis_utils.py in model_to_dot(model, show_shapes, show_layer_names, rankdir)
     53     from ..models import Sequential
     54 
---> 55     _check_pydot()
     56     dot = pydot.Dot()
     57     dot.set('rankdir', rankdir)

/usr/local/lib/python3.6/dist-packages/keras/utils/vis_utils.py in _check_pydot()
     18     if pydot is None:
     19         raise ImportError(
---> 20             'Failed to import `pydot`. '
     21             'Please install `pydot`. '
     22             'For example with `pip install pydot`.')

ImportError: Failed to import `pydot`. Please install `pydot`. For example with `pip install pydot`.