Neural Network Consoleをプログラムから実行する方法

こんにちはー。管理人のピヨ猫でーす。

Neural Network Consoleで機械学習をしてみているんだけど、Neural Network Consoleで作成したモデルってプログラムから実行することが出来るの?
GUIは便利だけどモデルが完成したらプログラムに組み込みたいんだけど、どうすれば良いのかな?

Neural Network Consoleの質問

 

Neural Network Consoleで作成したモデルはプログラムから実行できるよ。分かり易く図解で説明するね。また、サンプルのVBAプログラムも公開するね。

Neural Network Consoleについて

 

以下の記事でもNeural Network Consoleで作成したモデルをプログラムから実行する方法を紹介しましたが、昨日、VBAで学習済モデルを実行するプログラムを作ってみたので、理解している間に改めて図解で記事にします。

こんにちは。管理人のピヨ猫でーす。 以前記事にした通りNeural Network Consoleは学習済モデルを作成するための開発環境であ...

1.Neural Network Consoleのチュートリアル

Neural Network Consoleのチュートリアル

Neural Network Consoleをコマンドプロンプトから実行する方法は本家SONYのサイトにて公開されています。
まずはこのサイトを読まれることをお薦めします。ただ、割とざっくり記載されているので、チュートリアルを読んでもわからないという場合は本記事をお読みください。

【本家SONYのチュートリアル】
https://support.dl.sony.com/docs-ja/%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB%EF%BC%9Aneural-network-console%E3%81%AB%E3%82%88%E3%82%8B%E5%AD%A6%E7%BF%92%E6%B8%88%E3%81%BF%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A9/

Neural Network Consoleの学習済モデルをプログラムから実行する2つの方法

上述のサイトにも記載されていますが、SONY Neural Network Consoleの学習済モデルを実行する方法は2つあります。

1. コマンドラインインターフェイス(CUI)を用いて推論を実行する

コマンドラインインターフェイス(CUI)を用いてNeural Network Consoleの学習済モデルを実行する方法です。
後述のPython APIと異なりどんなプログラム言語からも実行することが出来ます。
今回はVBAから学習済モデルを実行するので、こちらの方法を紹介します。
なお、この方法は、毎回Pythonを起動し学習済みネットワークの構造やパラメータ、認識対象のデータセットの読み込みを行うため、実行速度が遅いというデメリットがあります。
コマンドラインインターフェイスは、それほどパフォーマンスを重視しないケースや、実験的に推論を実行させたい用途に向いています。

2. Python APIを用いて推論を実行する方法

Python APIを用いてNeural Network Consoleの学習済モデルを実行する方法です。
Neural Network Librariesの豊富な機能を直接利用することができ、外部のプログラムとの連携が容易でパフォーマンスにも優れています。
ただし、開発言語がPythonに限定されるというデメリットがあります。
なお、前述の通り今回は1のCUIによる実行方法の紹介となります。Python APIの使い方は改めて記事にしようと思います。

2.Neural Network Consoleの構成

Neural Network Consoleのモデルや生成されるファイルの関係は以下の様になっています。
Neural Network Consoleの構成

cli.py

Neural Network Consoleのコマンドラインインターフェイス(CUI)です。Neural Network ConsoleのGUIも中でこのコマンドを実行しています。
モデルの機械学習も学習済モデルの実行もcli.pyコマンドにて行います。

net.nntxt

Neural Network ConsoleのGUI上に表示されているモデルをテキストにしたものです。
機械学習用のデータセット(訓練データ、テストデータ)のパスもこのファイルに記載されています。
net.nntxt

Dataset(tran.csv、test.csv)

機械学習に用いる訓練データ、テストデータです。

progress.txt

調査中で用途不明です。0byteのテキストでOKですが、無いとcli.pyがエラーとなります。

results.nnp

Neural Network Consoleによるトレーニングで生成された学習済モデルです。
Neural Network Libraries(NNabla)を使って実行することが出来ます。(cli.pyも中でNNablaを使っているのでcli.pyを使って実行することも出来ます。)

monitoring_report.yml

機械学習結果のログファイルです。機械学習時のCost、training error、validation error が出力されます。

target.csv

学習済モデルを使って推論する対象の入力データです。

output_result.csv

学習済モデルを使って推論した結果が格納されるファイルです。

3.Neural Network Librariesのインストール

SONY Neural Network Consoleで作成された学習済モデルはNeural Network Libraries(NNabla)を使って実行します。
SONY Neural Network Consoleで作成された学習済モデルをプログラムから実行するにはNNablaが必要なので、NNablaをインストールする手順を説明します。

Neural Network Libraries(NNabla)とは

NNabla(Neural Network Libraries)はSONYが提供する機械学習のオープンソースです。
Neural Network Consoleのコアエンジンで、Pythonで動く機械学習のライブラリになります。
ライセンスはApache License 2.0となります。

PythonとNNablaのインストール

以下の記事を参照ください。
https://arakan-pgm-ai.hatenablog.com/entry/2017/09/26/080000

4.Neural Network Consoleで学習を行う方法

① 事前準備

net.nntxt
機械学習の実行にはnet.nntxtとprogress.txtが必要です。
net.nntxtは機械学習モデルの構成と機械学習に用いるデータセット(訓練データとテストデータ)のパスが記載されたファイルです。
progress.txtは良く分かりませんが0byteでOKです(-_-;)

net.nntxtの取得方法

機械学習したいモデルをNeural Network Consoleから開き、① TRAININGタグを選択 ⇒ ② Open Result Location を選択します。

Open Result Location

開いたフォルダからnet.nntxtとprogress.txtをプログラムを実行するフォルダにコピーします

Open Result Location

② cli.pyの実行(train)

cli.py
cli.pyをプログラムから実行します。

実行コマンド

python "cli.pyのパス"
train
-c "net.nntxtのパス"
-o "出力結果の格納パス"

実行コマンドサンプル

python "D:\opt\neural_network_console_140\libs\nnabla\python\src\nnabla\utils\cli\cli.py"
train
-c "D:\tmp\ai\fx_rate_analyse4\lstm-1day-30history\workspace\20190131\net.nntxt"
-o "D:\tmp\ai\fx_rate_analyse4\lstm-1day-30history\workspace\20190131"

VBAサンプルコード

Dim oWSH As Object
Dim sCmd As String

Set oWSH = CreateObject("WScript.Shell")
sCmd = "python [cli.pyのパス] train -c [net.nntxtのパス] -o [出力結果の格納パス]

'cli.pyコマンド実行(引数1:cli.pyコマンド、引数2:DOC窓の表示有無、引数3:true=同期)
oWSH.Run sCmd, 1, True

③ 実行結果の取得

Neural Network Consoleの学習
cli.pyコマンドの実行結果は-oで指定したフォルダに作成されます。
results.nnpが学習済モデル、monitoring_report.ymlは機械学習結果(cost、train_error、valid_error)が記載されたログファイルです。

5.Neural Network Consoleで推測を行う方法

① 事前準備

net.nntxt
学習済モデルを使って推論を行うには学習済モデル(results.nnp)と推論に使うデータ(target.csv)が必要です。
results.nnpの作成方法は前述の通りです。(※ cli.pyで作成した学習済モデルではなくSONY Neural Network ConsoleのGUIで作成した学習済モデルでも問題ありません。)
推論に使うデータ(target.csv)の形式は訓練データ(tran.csv)、テストデータ(test.csv)と同じフォーマットであれば何でも問題ありません。

② cli.pyの実行(forward)

cli.py
cli.pyをプログラムから実行します。

実行コマンド

python "cli.pyのパス"
forward
-c "results.nnpのパス"
-d "target.csvのパス"
-o "出力結果の格納パス"

実行コマンドサンプル

python "D:\opt\neural_network_console_140\libs\nnabla\python\src\nnabla\utils\cli\cli.py"
forward
-c "D:\tmp\ai\fx_rate_analyse4\lstm-1day-30history\workspace\20190131\results.nnp"
-d "D:\tmp\ai\fx_rate_analyse4\lstm-1day-30history\dataset\test20190131.csv"
-o "D:\tmp\ai\fx_rate_analyse4\lstm-1day-30history\workspace\20190131"

VBAサンプルコード

Dim oWSH As Object
Dim sCmd As String

Set oWSH = CreateObject("WScript.Shell")
sCmd = "python [cli.pyのパス] forward -c [results.nnpのパス]-d [target.csvのパス] -o [出力結果の格納パス]

'cli.pyコマンド実行(引数1:cli.pyコマンド、引数2:DOC窓の表示有無、引数3:true=同期)
oWSH.Run sCmd, 1, True

③ 実行結果の取得

Neural Network Consoleの推測
cli.pyコマンドの実行結果は-oで指定したフォルダに作成されます。
output_result.csvが推論結果です。
カンマ区切りのテキストファイルなので用意にプログラムから結果を取得できます。

VBAサンプルコード

Dim sLine As String
Dim lTargetRow As Long

Open "output_result.csvのパス" For Input As #1
lTargetRow = 1
Do Until EOF(1)
Line Input #1, sLine
sValue = Split(sLine, ",")
SheetResult.Cells(lTargetRow, 5) = sValue(2)
lTargetRow = lTargetRow + 1
Loop

Close #1

6.Neural Network Consoleサンプルプログラム

Cli.pyを使ったVBAのサンプルプログラムをGIT HUBにアップしたので良ければ参考にしてください。
https://github.com/shibayu2002/nnabla_sample

それでは、少しでもこの記事がお役にたったら嬉しいです。

Neural Network Consoleをプログラムから実行する方法でした

広告




スポンサーリンク
広告




広告




シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
広告