Neural Network Consoleで複数種類の入力データを用いるネットワークを構築する方法

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

SONY Neural Network Consoleで機械学習をしてるんだけど、複数の画像を入力データにしたいんだけど出来るかな?

疑問がある

SONY Neural Network Consoleで複数の画像を入力データにするのは簡単に出来るよー。これからやり方を説明するね。

記事の説明です

1.SONY Neural Network Consoleとは?

SONY Neural Network Consoleは、SONY製の機械学習オープンソースNNabla(Neural Network Libraries)の統合開発環境です。機械学習の開発環境としてはGoogleのTensorFlowが有名どころですが、NNabla/NNCはTnesorFlowと比べ開発環境が視覚的で初心者には分かり易いところに一日の長があります。
2017年11月にβ版が公開され、2018年5月に正式サービス化されました。
詳しくはこちらの記事を参照ください。

https://piyonekochannel.com/entry/2020/02/11/201748

2.複数種類の入力データを用いたいケース

SONY Neural Network Consoleで複数の画像を入力データにする方法を照会する前に、そもそも、機械学習で複数の画像または複数のデータを入力にしたいケースとはどのようなものが考えられるかをご紹介します。
機械学習で複数の画像または複数のデータを入力にしたいケースは良くあるので、やり方を抑えておいて損はありません。

複数の画像から結果を予想する

例1.トランプの神経衰弱

2つの画像を見て一致しているか一致していないかを分類しようとした場合、入力データには2つの画像が必要です。

例2.♀♂相性マッチ

男性と女性の顔写真を比較してカップルになり易いか、そうでないかを分類しようとした場合、入力データには2つの画像が必要です。

画像と数値データから結果を予想する

例1.天気予報

気象衛星からの写真と現地の気温や風向き、風速から天気を予想しようとした場合、入力データは画像、数値データ1(気温)、数値データ2(風向き)、数値データ2(風速)の4つが必要です。
また、それぞれ分析方法が異なります。画像はLeNet(分類)、気温は過去データとの比較のためLSTM(回帰)とするなど、入力データだけでなく、分析方法も分ける必要があります。

例2.感情診断

表情と声色から感情を診断しようとした場合、画像と音声データの2つが必要です。
この場合も、画像はLeNet(分類)、音声データはLSTM(回帰)とするなど、分析方法も分ける必要があります。

(ご参考)管理人のぴよ猫が複数データで機械学習を行いたい理由

別記事で紹介していますFX分析の精度を上げるため、複数データでの分析を行いたいと考えています。
直近5日くらいの画像で蝋燭チャートに「なべ底」などのシグナルが出ていないか? 移動平均線がゴールドクロスを描いていないか? などの複数の評価を混ぜたら精度上がって欲しいなーー。

機械学習によるFX予想はこちら↓↓↓の記事などで詳しく紹介していく予定です。こちらの記事も興味があれば見て下さい。
https://syuuai.hatenablog.com/entry/2019/04/15/233931

3.SONY Neural Network Consoleで複数種類の入力データを用いるネットワークを構築する方法

入力データを複数にする場合に出来ないといけないこと

入力データを複数にする場合、以下の2つのことが出来ないければなりません。

  • 入力層を分ける
  • 複数層を統合する

入力データを分けるということは入力層を分けるということです。入力層を分けることで、入力データ毎に独立のネットワークを構築できます。
但し、最終的には2つのネットワークを統合して評価する必要があるので、複数層を統合する機能が必要になります。

入力層を分ける方法

SONY Neural Network Consoleで入力層を分けるには、Input層のDatasetプロパティを使います。
Datasetプロパティに指定する列ラベルを分けることで、Input層毎に読み込むデータを変えることが出来ます。
Input層

入力層を分ける手順

1.データの列ラベルを分ける

データの列ラベルを分ける
データの列ラベルを分ける

2.入力層の列ラベルを設定する

入力層の列ラベルを設定する

お試し実行

取りあえず動かしてみる。エラーにならないことの確認なので入力層だけです(-_-;)
2つの入力層の読み込み
動きました!!

複数のネットワークを統合する方法

SONY Neural Network Consoleで複数のネットワークを統合するには、Mul2などの『2入力算術演算レイヤー(Arithmetic(2 Inputs))』を使います。

【2入力算術演算レイヤー(Arithmetic(2 Inputs)】

レイヤー 数式
Add2 o=i1 + i2
Sub2 o=i1 - i2
Mul2 o=i1 × i2
Div2 o=i1 ÷ i2
Pow2 o=i1 ^ i2
Maxmum2 o = max(i1,i2)
Minimum2 o = min(i1,i2)

複数のネットワークを統合する手順

1.複数のネットワークを2入力算術演算レイヤーで繋げる

2入力算術演算

お試し実行

取りあえず結果は気にせず動かしてみました。エラーにならないことの確認だけです(-_-;)
2つの入力層の読み込み
2つの入力層の読み込み
2つの入力層の読み込み
動きました!!

4.SONY Neural Network Consoleのマニュアルの紹介

終わりにSONY Neural Network Consoleのマニュアルを照会します。
上記で述べたことや各層(レイヤー)の説明が載っていますので、困ったら参照してみて下さい。

複数種類の入力データを用いるネットワークのチュートリアル

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%9A%E8%A4%87%E6%95%B0%E7%A8%AE%E9%A1%9E%E3%81%AE%E5%85%A5%E5%8A%9B%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E7%94%A8%E3%81%84%E3%82%8B/

レイヤーリファレンス

https://support.dl.sony.com/docs-ja/layer_reference/

それでは、少しでも本記事がお役に立てたら幸いです。


FX入門
↓↓↓

ゼロから始める!マンガFX入門 [ 川口一晃 ]

価格:1,350円
(2019/4/8 22:03時点)
感想(0件)

アルゴリズムトレードが出来るFX会社
↓↓↓

広告




スポンサーリンク
広告




広告




シェアする

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

フォローする

スポンサーリンク
広告