複数のモーダルを入力データとするLSTMの学習について
조회 수: 17 (최근 30일)
이전 댓글 표시
複数のモーダルを入力データとするLSTMによる学習についての質問です.
モーダルA,モーダルB,モーダルCから得られる時系列データを入力とするLSTMの学習を行おうと思っているのでうsが,そのデータの構築法ホがわからないため,質問させていただきました.
各モーダルの各サンプルの時系列データは,512×N次元のdouble型の行列で,512は特徴次元数,Nはタイムステップ数となります.
各サンプルのタイムステップ数は固有であるため,通常のLSTM(単モーダル)の学習の際は,以下のように学習データをcell配列として構築していました.
このデータと,ラベル情報をcategoricalデータとして定義し,以下のようなネットワークで学習を行いました.
layers = [ ...
sequenceInputLayer(inputSize)
bilstmLayer(numHiddenUnits1,'OutputMode','sequence')
dropoutLayer(0.2)
bilstmLayer(numHiddenUnits1,'OutputMode','last')
dropoutLayer(0.2)
fullyConnectedLayer(numClasses)
softmaxLayer
classificationLayer]
.
.
.
net = trainNetwork(Train_Data,Train_Label,layers,options);
このLSTMだと,しっかり学習を行うことが出来るのですが,複数のモーダルを入力とした時,つまり下のような図のネットワーク(BiLSTMになっていますが)に対してどのように学習データを構築すればよいのかわかりません.
サンプル数×3(モーダル数)のcell配列を作ってみたりしてみたのですが,うまく行きませんでした.
複数の入力層(sequence)を有する際,どのように学習データおよびラベルデータを構築すればよいのかわかる方がいらっしゃいましたら教えていただきたく思っております.
よろしくお願いいたします.
댓글 수: 2
Kenta
2020년 7월 3일
こんにちは、上の図でいう、青のsequenceの3つは、それぞれ、タイムステップの数がちがう、ということですね。
その場合、タイムステップが少ないデータに関しては、はじめのデータは0で、埋めておいて、タイムステップを合わせ、そして、入力層を1つにまとめるのはいかがでしょうか。
たとえば、自然言語処理の簡単な例の以下の例でもそのようにしてうまくいっていました。
채택된 답변
Kenta
2020년 7월 8일
こんにちは、コメントのほう、返信ありがとうございます。
>>特徴統合を行うイメージでよろしいでしょうか?個人的には,Late Fusion気味に持っていきたいというのはあるのですが
そうですね、統合しているイメージです。こちらは、late fusionというより、early fusion感がありますね。データの内容を知らないので何とも言えませんが、あまり精度は変わらない気もします。
こちらは、「カスタムループ」とドキュメントの言っている方式でlate fusion的に複数入力でしたものです。参考になれば幸いです。
댓글 수: 2
Kenta
2020년 7월 10일
はい、うまくいくといいですね。またearly fusionのほう、結果がわかれば教えていただけると幸いです。カスタムループのほうは、カスタムループでLSTMは難しいかもしれませんが、何らかのヒントになればうれしです。よろしくお願いいたします。
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Conway's Game of Life에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!