LSTMをつかって、複数インプットから一つのアウトプットを出したいのですが、、、
조회 수: 12 (최근 30일)
이전 댓글 표시
こんばんは。
現在、水量変動予測ができる時系列解析ネットワークを構築したく奮闘中です。
現在はLSTMを使いたいと思っているのですが、
インプットが4個、対応するデータが1個のアウトプットで学習させたいと思っています。
そして以下のように組んでみたのですが
numFeatures = 4;
numResponses = 1;
numHiddenUnits = 200;
layers = [ ...
sequenceInputLayer(numFeatures)
lstmLayer(numHiddenUnits)
fullyConnectedLayer(numResponses)
regressionLayer];
options = trainingOptions('adam', ...
'MaxEpochs',250, ...
'GradientThreshold',1, ...
'InitialLearnRate',100, ...
'LearnRateSchedule','piecewise', ...
'LearnRateDropPeriod',125, ...
'LearnRateDropFactor',0.2, ...
'Verbose',0, ...
'Plots','training-progress');
net = trainNetwork(input,pump3,layers,options); %inputは4個(4×881)のインプットデータ、pump3は対応データ
で学習を行うと、以下のようになります。
・LSTMのチュートリアルでは縦軸はaccuracy(%)でしたが、なぜかRMSE(Root Mean Square)になっていたり
・学習の挙動がおかしかったり しています。
これはインプットでーたの形式がおかしいのでしょうか?
もしくはLSTMのコードがおかしいため起こるのでしょうか?
댓글 수: 0
채택된 답변
Hiro Yoshino
2019년 11월 11일
この様子だと、データの対が1つしかない状況でしょうか?
input{1,1:4} --> pump3(1)
input{2, 1:4} --> pump3(2)
....
input{n, 1:4} --> pump3(n)
のようにいくつか対が無いと学習は上手く行かないかなと思います。
どのチュートリアルか?分かりかねますが、今回は回帰モデルなのでRMSEで良いと思います。
分類でしたらAccuracyかなと思います。
댓글 수: 2
Kenta
2020년 2월 23일
ここの会話でいう、「データの対」とは、
・気温
・降水量
・上流からの水(1)
・上流からの水(2) ⇔ ・下流への水
という5つで1セットのデータが何個あるかということを言ってるのだと思います。
「・学習の挙動がおかしかったり」
に関しては、例えば初期学習率が100になっていて、少し大きいのかもしれません。local minimumを飛び越えてしまって、学習曲線がこのようにガタガタすることも多いかと思います。
추가 답변 (1개)
Hiro Yoshino
2019년 11월 11일
「入力」と「答え」 の対が必要です。(現状、一つだけ?)
「答え」は未知の入力が有った場合に得られる出力と同じフォーマットである必要が有ります。
(一つの値なら一つの値、連続値なら連続値)
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!