画像を入力としないC​NNを構築するにはど​うしたらいいでしょう​か?

32 views (last 30 days)
Asuka
Asuka on 9 Jan 2018
Edited: michio on 30 May 2018
CNNでcsvファイル(数値列)を扱いたいのですが,入力層をどのように設定すればいいのか困っています. 現在は画像を扱っているので
layers=[ imageInputLayer([460 175 3]); % RGB convolution2dLayer(3,20); reluLayer(); maxPooling2dLayer(2,'Stride',2); ...
としています. また,データストアも使用しており,
traindigitDataset = imageDatastore(traindigitDatasetPath,... 'IncludeSubfolders',true,'LabelSource','foldernames');
としています. 画像を入力として扱わないCNNを構築するには,これらをどのような設定にすればよいのでしょうか? ご教授頂けたら幸いです. 宜しくお願い致します.

Accepted Answer

mizuki
mizuki on 9 Jan 2018
Edited: mizuki on 9 Jan 2018
関数名 imageInputLayer や imageDatastore を見ていただいても分かるように、これらは画像に特化した入力層、データストアになります。
数値データ(センサ信号など)の場合、 SequenceInputLayer のような入力層を使用します。また、画像ではなく通常の数値データの場合、 datastore のデータストアを使用します。
なお、データストアの種類は以下にリストされています。
なお、畳み込みニューラルネットワークは、アルゴリズムの性質上、画像やセンサデータのような各サンプル点が近くのサンプル点と関連するような場合にはある程度良い推定モデルを作成できる可能性があります。しかし、そういったデータでない場合はCNNが最適ではないこともあります。もし該当しそうな場合は、他の機械学習のアルゴリズムも検討されることをお勧めします。
  5 Comments
mizuki
mizuki on 31 Jan 2018
R2017b のバージョンでは、sequenceInputLayer() に対して convolution2dLayer() を適用することができない状況のようです。
michioさんのコメントにもありますように、時系列データに対しては LSTM がよく使用されますので、こちらもお試ししてみてください。

Sign in to comment.

More Answers (1)

michio
michio on 19 Jan 2018
Edited: michio on 19 Jan 2018
imageInputLayer([1 6000]);
などと、信号を 1xN の"画像"として取り扱った例があります。
layers = [imageInputLayer([1 6000])
convolution2dLayer([1 200],20,'stride',1)]
と構成していきます。英語ですがより具体的な例はこちらも参考にしてください。
  2 Comments
michio
michio on 19 Jan 2018
Edited: michio on 30 May 2018
面白そうなトピックですね。
分類問題であれば LSTM も試す価値があると思いますので、ぜひ。
***
追記:R2018aからLSTMは回帰にも対応しています。

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!