LSTMによる複数の入力データを用いた学習方法について
12 ビュー (過去 30 日間)
古いコメントを表示
LSTMによる学習のうち,入力データと学習のさせ方に関する質問です.
% 学習用データの読み込み
% 処理
% 入力用の時系列データをTrainとして定義
XTrain = Train(:,1:end-1);
YTrain = Train(:,2:end);
numFeatures = 5;
numResponses = 5;
numHiddenUnits = 100;
layers = [ ...
sequenceInputLayer(numFeatures)
flattenLayer('Name','flatten')
lstmLayer(numHiddenUnits,'OutputMode','sequence')
fullyConnectedLayer(numResponses)
regressionLayer];
options = trainingOptions('adam', ...
'MaxEpochs',200, ...
'GradientThreshold',1, ...
'InitialLearnRate',0.005, ...
'LearnRateSchedule','piecewise', ...
'LearnRateDropPeriod',100, ...
'LearnRateDropFactor',0.3, ...
'Verbose',0, ...
'Plots','training-progress');
net = trainNetwork(XTrain,YTrain,layers,options);
実際には,実験パラメータとして条件Aというものが存在しているとすると,
・条件A = 1のときの訓練データTrain1
・条件A = 2のときの訓練データTrain2
...
・条件A = 6のときの訓練データTrain6
という6つの時系列データのデータセットを所持しています.
各訓練データは1つのタイムステップに1行5列のデータをもち,300タイムステップ分の行列データとなっています.
条件Aが異なることによる取得される数値の変化は時系列予測を行うのに十分な特徴を有するものとし,それ以外のデータの形状などは同じとします.
ここで,この6つの訓練データすべてを学習させた学習モデルを作成したいと考えています.
この場合,参考ページにあるような resetState() や predictAndUpdateState() を用いれば可能なのでしょうか?
基礎的な間違いなど未熟な部分も多々あるかと存じますが,是非ご教示のほどよろしくお願いいたします.
0 件のコメント
採用された回答
Kenta
2020 年 3 月 24 日
こんにちは、はい、上のようなコードで学習をさせて、resetStateで、メモリなどの蓄積した情報をリセットし、predictAndUpdateStateで、繰り返し予測をしていけば良いと思います。ご提示いただいた例は、1つの値を回帰していますが、今回は、5つの値とその以前の情報からt+1での5つの値を回帰するイメージですね。
>> 条件Aが異なることによる取得される数値の変化は時系列予測を行うのに十分な特徴を有するものとし,それ以外のデータの形状などは同じとします
確かにこの場合だと、6つの条件を混ぜて学習させても良い結果がでるかもしれませんね。
2 件のコメント
Kenta
2020 年 3 月 25 日
こんにちは、ご返信ありがとうございます。はい、そのようでよかったです。
とはいえ、メッセージで説明することはできても実際にコードで走らそうとすると特にLSTMでは予期せぬエラーが時もあると思いますので、何かございましたらいつでもご質問ください。
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で イメージを使用した深層学習 についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!