LSTMをつかって、複数インプットから一つのアウトプットを出したいのですが、、、
12 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Shuhei IKEDA
am 5 Nov. 2019
Kommentiert: Kenta
am 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は対応データ
で学習を行うと、以下のようになります。
・LSTMのチュートリアルでは縦軸はaccuracy(%)でしたが、なぜかRMSE(Root Mean Square)になっていたり
・学習の挙動がおかしかったり しています。
これはインプットでーたの形式がおかしいのでしょうか?
もしくはLSTMのコードがおかしいため起こるのでしょうか?
0 Kommentare
Akzeptierte Antwort
Hiro Yoshino
am 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 Kommentare
Kenta
am 23 Feb. 2020
ここの会話でいう、「データの対」とは、
・気温
・降水量
・上流からの水(1)
・上流からの水(2) ⇔ ・下流への水
という5つで1セットのデータが何個あるかということを言ってるのだと思います。
「・学習の挙動がおかしかったり」
に関しては、例えば初期学習率が100になっていて、少し大きいのかもしれません。local minimumを飛び越えてしまって、学習曲線がこのようにガタガタすることも多いかと思います。
Weitere Antworten (1)
Hiro Yoshino
am 11 Nov. 2019
「入力」と「答え」 の対が必要です。(現状、一つだけ?)
「答え」は未知の入力が有った場合に得られる出力と同じフォーマットである必要が有ります。
(一つの値なら一つの値、連続値なら連続値)
LSTMが特殊に見えるかもしれませんが、普通の回帰モデルと同じです。
入力データ間の相関を考慮しているモデルということだけが異なる点です。
0 Kommentare
Siehe auch
Kategorien
Mehr zu 時系列、シーケンス、およびテキストを使用した深層学習 finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!