こんにちは。管理人のピヨ猫でーす。
以前記事にした通りNeural Network Consoleは学習済モデルを作成するための開発環境であり、実行環境ではありません。実行はNNablaが動くサーバー上で行います。
今回はNeural Network Consoleで作成した学習済モデルをNNablaで動かす方法を紹介します。
どうやって動かそうかと考えたところ、Neural Network Consoleがやっていることと同じことをすれば良いと思いまして、今回はNeural Network Consoleでやっていることを調べて、それをNNabla上で手動で動かすという方法で、学習済モデルをNNabla上で動かすことを実現しようと思います。
なお、初めにお断りしておくと、たぶん、ここで紹介するやり方よりもエレガントな方法があると思います。ただ、NNablaを触って日が浅く正直まだあまり理解していないので、まずは、一番?シンプルな方法を取ろうと思います。
- 実行コマンドはcli.py
Evaluationを実行したときにNNCが何を動かしているかコンソールに出ていました。NNablaのCLI(コマンドラインインターフェース)であるcli.pyを実行していました。 - 実行コマンド(cli.py)のパラメタ
cli.pyの実行コマンドも調べてみました。
nntxtはネットワークの定義です。NNCで作成したものをそのまま使えます。
パラメタファイルは学習済のパラメタです。NNCで作成したものをそのまま使えます。
データ定義はINPUTデータの定義です。NNCで作成されたものを流用できます。
出力先のディレクトリは出力結果の出力先です。
さあ。実行方法が分かったので後はこれをサーバーで実行するだけです。
- nnablaのインストールディレクトリの確認
Nnablaを実行するにあたり、nnablaのインストールディレクトリを確認しましょう。# nnablaのインストールディレクトリ確認
pip show nnabla
Name: nnabla
Version: 0.9.9
Summary: Neural Network Libraries
Home-page: https://github.com/sony/nnabla
Author: UNKNOWN
Author-email: nnabla@googlegroups.com
License: Apache Licence 2.0
Location: /usr/local/python/lib/python3.4/site-packages ← インストールディレクトリなので、cli.pynoのインストールディレクトリは以下になります。
//usr/local/python/lib/python3.4/site-packages/nnabla/utils/cli/cli.py - cli.pyを実行する
ではcli.pyを実行してみましょう。必要なファイルはNNCから取得してください。
各ファイルの格納先は前述した通りコンソールログに表示されているので説明を割愛します。# cli.pyの実行コマンド例
python /usr/local/python/lib/python3.4/site-packages/nnabla/utils/cli/cli.py forward -c ./net.nntxt -p ./parameters.h5 -d ./test.csv -o ./OUTPUT2018-05-20 00:51:11,546 [nnabla][INFO]: Initializing CPU extension...
/usr/local/python/lib/python3.4/importlib/_bootstrap.py:321: FutureWarning: Conversion of the second argument of issubdtype fromfloat
tonp.floating
is deprecated. In future, it will be treated asnp.float64 == np.dtype(float).type
.
return f(*args, **kwds)
2018-05-20 00:51:13,506 [nnabla][INFO]: Parameter load (<built-in function format>): ./parameters.h5
2018-05-20 00:51:13,506 [nnabla][WARNING]: Old-style context. Updating to new format.
2018-05-20 00:51:13,519 [nnabla][INFO]: DataSource with shuffle(False)
2018-05-20 00:51:13,521 [nnabla][INFO]: Using DataSourceWithFileCache
2018-05-20 00:51:13,521 [nnabla][INFO]: DataSource with shuffle(False)
2018-05-20 00:51:13,521 [nnabla][INFO]: Cache Directory is None
2018-05-20 00:51:13,521 [nnabla][INFO]: Cache size is 1000
2018-05-20 00:51:13,523 [nnabla][INFO]: Tempdir for cache /tmp/tmpg6vxe8z0 created.
2018-05-20 00:51:13,523 [nnabla][INFO]: Creating cache start
2018-05-20 00:51:13,554 [nnabla][INFO]: Creating cache file /tmp/tmpg6vxe8z0/cache_00000000_00000000.h5
2018-05-20 00:51:13,556 [nnabla][INFO]: Creating cache end
2018-05-20 00:51:13,556 [nnabla][INFO]: Using DataSourceWithMemoryCache
2018-05-20 00:51:13,556 [nnabla][INFO]: DataSource with shuffle(False)
2018-05-20 00:51:13,561 [nnabla][INFO]: On-memory
2018-05-20 00:51:13,561 [nnabla][INFO]: Using DataIterator
2018-05-20 00:51:13,564 [nnabla][Level 99]: data 1 / 1
2018-05-20 00:51:13,573 [nnabla][Level 99]: Forward Completed.さくっと正常終了しました。
NNCでやっているのと同じことをしただけなので動いて当たり前ですが、すんなり動いて少しびっくりしました。
Neural Network Console上でテスト実行は出来るのに、サーバー上で動かす必要あるの?Neural Network Consoleが実行しているコマンドをただ実行しているだけじゃん。と思った方もいると思います。
やっていることはNeural Network Consoleと変わりません。しかし、Neural Network ConsoleのGUIを使わずに実行できることにメリットがあります。
本当はcli.pyを使わず、pythonから直接実行する方法もあるようですが、自分にはまだ難しいのでcli.pyを使いますが、これだけでもだいぶメリットがあります。
【メリット】
- プログラムから呼び出せる
- 出力ディレクトリが固定
NNCから実行するとNNCが日付付きの名前をつけてしまいます。
出力先が固定なのでツールで結果を取りだすということが用意に出来るようになります。
これにより、自作のWEBサイト等との連動が容易になります。
最後にもう一度、学習済のモデルを実行する流れを見てみましょう。
# ①入力ファイル
cat ./test.csv
x:image,y:9
test.png,0
# ②実行コマンド
python /usr/local/python/lib/python3.4/site-packages/nnabla/utils/cli/cli.py forward -c ./net.nntxt -p ./parameters.h5 -d ./test.csv -o ./OUTPUT
# ③出力結果
cat ./OUTPUT/output_result.csv
x:image,y:9,y'
/home/apl/nnabla/sample/test.png,0,0.9995036125183105
やっていることはシンプルです。
上記のことをプログラムからやらせてあげればアプリケーションにNeural Network Consoleで作成したAIを組み込むことが出来ます。
【プログラムにAIを組み込む例】
今回用いているサンプルは、0~9の手書き文字の画像が何かを評価するものです。
画像ファイルを読み込むWEBサイトを作成して、読み込んだ画像を以下の手順で処理するプログラムを作れば、画像評価サイトが作れます。
- a. ①のファイルに定義されているファイルを置き換える
具体的にはtest.pngを置き換える - b. ②のコマンドを実行する
- c. ③のファイルから結果を取得する。
次は、実際にWEBサイトと連動してみたいと思います。
◆ 推薦図書
![]() |
詳解 ディープラーニング TensorFlow・Kerasによる時系列データ処理 [ 巣籠 悠輔 ] 価格:3,672円 |
![]() |
【送料無料】 機械学習 データを読み解くアルゴリズムの技法 / 竹村彰通 【本】 価格:6,696円 |