LSTMをつかって、​複数インプットから一​つのアウトプットを出​したいのですが、、、

5 visualizzazioni (ultimi 30 giorni)
Shuhei IKEDA
Shuhei IKEDA il 5 Nov 2019
Commentato: Kenta il 23 Feb 2020
こんばんは。
現在、水量変動予測ができる時系列解析ネットワークを構築したく奮闘中です。
現在は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は対応データ
で学習を行うと、以下のようになります。
figure1 11.05.png
・LSTMのチュートリアルでは縦軸はaccuracy(%)でしたが、なぜかRMSE(Root Mean Square)になっていたり
・学習の挙動がおかしかったり しています。
これはインプットでーたの形式がおかしいのでしょうか?
もしくはLSTMのコードがおかしいため起こるのでしょうか?

Risposta accettata

Hiro Yoshino
Hiro Yoshino il 11 Nov 2019
この様子だと、データの対が1つしかない状況でしょうか?
input{1,1:4} --> pump3(1)
input{2, 1:4} --> pump3(2)
....
input{n, 1:4} --> pump3(n)
のようにいくつか対が無いと学習は上手く行かないかなと思います。
どのチュートリアルか?分かりかねますが、今回は回帰モデルなのでRMSEで良いと思います。
分類でしたらAccuracyかなと思います。
  2 Commenti
Kenta
Kenta il 23 Feb 2020
ここの会話でいう、「データの対」とは、
・気温
・降水量
・上流からの水(1)
・上流からの水(2) ⇔ ・下流への水
という5つで1セットのデータが何個あるかということを言ってるのだと思います。
「・学習の挙動がおかしかったり」
に関しては、例えば初期学習率が100になっていて、少し大きいのかもしれません。local minimumを飛び越えてしまって、学習曲線がこのようにガタガタすることも多いかと思います。

Accedi per commentare.

Più risposte (1)

Hiro Yoshino
Hiro Yoshino il 11 Nov 2019
「入力」と「答え」 の対が必要です。(現状、一つだけ?)
「答え」は未知の入力が有った場合に得られる出力と同じフォーマットである必要が有ります。
(一つの値なら一つの値、連続値なら連続値)
LSTMが特殊に見えるかもしれませんが、普通の回帰モデルと同じです。
入力データ間の相関を考慮しているモデルということだけが異なる点です。

Community Treasure Hunt

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

Start Hunting!