チュートリアル:ベクトルもしくは行列をニューラルネットワークの入力とする

Tuesday, December 05, 2017

App , Cloud

Posted by Yoshiyuki Kobayashi

Neural Network Consoleは、画像以外にベクトルや行列の入力にも対応しています。
本チュートリアルでは、ベクトル、行列データの入力方法について解説します。

ベクトルの入力方法(データセットCSVファイルに直接記入)

Neural Network ConsoleのデータセットCSVファイルには、ベクトルを直接記入することができます。

例えば、入力xとして5次元のベクトルを用いる場合は、以下のようにx__0~x__4(変数名x、ダブルアンダースコアに続けてベクトル要素のIndex値0~4)の5つの列を作成し、セルにはそれぞれの要素の値を記入します。



例:xが5次元ベクトルであるデータセットCSV

Neural Network Consoleには、このフォーマットで作成したフィッシャーのアヤメデータセットが同梱されています。
Windows版
\samples\sample_dataset\iris_flower_dataset\

Cloud版
iris_flower_dataset.iris_flower_dataset_training_delo

ベクトルとして用意したデータは、ネットワーク構造の設計時にSizeをベクトル要素数としたInputレイヤーを用いることで入力することができます。



Sizeを5としたInputレイヤーで要素数5のベクトルを入力

この方法はベクトルが数十次元、数万データ程度の小さなデータセットでは手軽に利用することができる一方、あまりにデータセットが大きくなるとデータセットCSVファイルのサイズが巨大になるという問題があります。また、データセットのサイズによってはそもそもメモリに載りきらなくなる可能性もあります。

そのような場合は、この後解説するデータ毎にCSVファイルを用意する(ベクトルを1列の行列として表現)、という方法を用いることができます。

行列の入力方法(データ毎にCSVファイルを用意)

ここでは、データ毎に行列データの記入されたCSVファイルを用意する方法を紹介します。説明のために、XYZの3軸加速度×16サンプルで表される加速度センサ信号を入力するケースを例題として取り上げたいと思います。



入力する加速度センサ信号のイメージ

上記のような加速度センサ信号は以下のような行列形式で表すことができます。行列データをNeural Network Consoleで扱う場合は、以下に示すような行列データのCSVファイル(データCSVファイル)をデータ毎に用意します。



データCSVファイルの例

データCSVファイルの用意ができたら、あとは画像を扱う場合と同様にして、セルにデータCSVのファイル名を記入したデータセットCSVファイルを用意します。



データCSVファイルを扱うデータセットCSVファイルの例

./train/0.csvなどが、先ほど作成した1つ1つのデータCSVファイルを示します。行列として用意したデータは、ネットワーク構造の設計時にSizeを「行数, 列数」としたInputレイヤーを用いることで入力することができます。今回の例では行数が16、列数が3ですので、Sizeは16,3となります。



Sizeを16,3としたInputレイヤーで16行3列の行列を入力