複数の入力データによ​るpredictAn​dUpdateSta​teを用いたLSTM​のアップデート方法に​ついて

7 views (last 30 days)
Yuuki
Yuuki on 15 Apr 2020
Commented: Kenta on 18 Apr 2020
以前似た質問をさせて頂きましたが,その実行後に問題が発生致しましたので再度質問を立てさせていただきました.
前提条件として,実験パラメータに条件Aというものが存在しており,
・条件A = 1のときの訓練データTrain1
・条件A = 2のときの訓練データTrain2
...
・条件A = 6のときの訓練データTrain6
という6つの時系列データのデータセットが存在しており,今回はこのうちTrain1, 3, 5をLSTMで学習させ,Train4を予測したいです.
(各訓練データは1つのタイムステップに1行5列のデータをもち,300タイムステップ分の行列データとなっています.
条件Aが異なることによる取得される数値の変化は時系列予測を行うのに十分な特徴を有するものとし,それ以外のデータの形状などは同じとします.)
ここで以下のようなコードを実行させたのですが,上記の内容は正しく実装できていますでしょうか?
実際に実行してみた結果,Train4の予測結果のRMSE値が非常に大きな値を一定値として示し,局所解に陥ったような挙動を示しており,
そもそも学習自体が正しく行われていないのではないかと考えています.
% Preparing for Train1, 3, 4, 5 from dataset1, 3, 4, 5
Train1 = dataset1(:,1:300);
XTrain1 = Train1(:,1:end-1);
YTrain1 = Train1(:,2:end);
Train3 = dataset3(:,1:300);
Train4 = dataset4(:,1:300);
Train5 = dataset5(:,1:300);
% machine learning
net = trainNetwork(XTrain1,YTrain1,layers,options);
% Update the network with Train3
net = resetState(net);
net = predictAndUpdateState(net,Train3(:,1:end-1));
% Update the network with Train5
net = resetState(net);
net = predictAndUpdateState(net,Train5(:,1:end-1));
% Reset to prepare for prediction with Train4
net = resetState(net);
% Prediction
StepNum = size(Train4);
for i = 2:StepNum(2)
Pred4(:,i) = predict(net,Train4(:,i-1));
end
該当箇所の抜粋のため伝わりづらくまた稚拙な部分もあるかと思いますが,何卒ご教示お願い致します.

Accepted Answer

Kenta
Kenta on 15 Apr 2020
こんにちは、さきほど以前の質問からコメントを頂いていたのを確認しました。遅れてすいません。
ちなみに、こちらは、t-1までのデータから時刻tの値を予測、次に、tまでのデータからt+1を予測、、、のようなドミノ倒しのような(?)感じで正しいでしょうか。
Train1, 3, 5を含むセル配列を用意し訓練、Train4で推論、という流れと思います。
うえのpredictandupdatestateでは、予測し、メモリセルなどの諸々の値をアップデート、そのパラメータでさらに更新、、、としていきます。つまりこちらは予測用の関数と思います。
今回の内容ではセル配列で3×1のtraindataを用意、そのセルの1つ1つには、1×t(時間)分のデータを格納
=>それをもとにtrainnetworkで訓練
=>predictandupdatestateで更新しながら推論
という流れと思います。
  4 Comments
Yuuki
Yuuki on 18 Apr 2020
こちらこそ非常に丁寧にご回答頂いており、大変勉強になっております。
また入れ違いになり申し訳ないのですが、上のコメントで追記致しました問題に関しまして未だ解決できておらず、もしよろしければご教示いただければ幸いです。
Kenta
Kenta on 18 Apr 2020
ご返信ありがとうございます。確かにちょうど入れ違いでコメント頂いていたようですね。
「さらにそのcell一つ一つは1×299 cellであり、このひとつのcellは5行1列のデータを有する」
ここが問題(のひとつ)です。セルの中身は縦5×横299のdouleやsingle型です。
それでもなおエラーを返すようでしたら、また改めてご質問ください。

Sign in to comment.

More Answers (0)

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!