複数入力から一つの出力を出すLSTMの作成
31 views (last 30 days)
Show older comments
LSTMを使用して1100×1の時系列データを3つ入力として入れて,一つの出力(1100×1)を出すようなコードを考えています.3つの時系列データはそれぞれ異なる単位を持つ変数で,データ数は400です.
以下の例からLSTMで実現可能だと思うのですが初心者なので正しく理解できていない可能性があります
深層学習を使用してエンジンの残存耐用期間 (RUL) を予測する
そこでLSTMでそのようなシステムが可能かどうかお聞きしたいです.
初心者で必要な判断に必要な情報が抜けていましたら申し訳ありませんがよろしくお願いいたします.
0 Comments
Answers (1)
Naoya
on 25 Nov 2021
複数の時系列を学習させる場合は、 入力データおよび教師データを nx1 のセル配列にする必要があります。
ここで各セルには、 [入力数 x 時系列ステップ数] , [出力数 x 時系列ステップ数] の行列を定義します。
以下は、 3入力1出力 100ステップ分の時系列データを 4種類学習した例となります。
% 入力データ 3入力 100時間ステップ分, 4時系列データ
xdata = {rand(3,100);
rand(3,100);
rand(3,100);
rand(3,100)};
% 出力データ 1入力 100時間ステップ分, 4時系列データ
ydata = {rand(1,100);
rand(1,100);
rand(1,100);
rand(1,100)};
% レイヤ定義
layers = [sequenceInputLayer(3);
lstmLayer(50);
fullyConnectedLayer(1);
regressionLayer()];
% 学習オプション / 学習
opts = trainingOptions('sgdm','InitialLearnRate',1e-2);
net = trainNetwork(xdata, ydata, layers, opts);
3 Comments
Naoya
on 18 Jun 2024
学習済のネットワーク "net" は、下記のように predict 関数を使って、新たな時系列データ z_indata に対して、その推論値を z_outdata として出力することができます。
z_indata = rand(3,100);
z_outdata = predict(net, z_indata);
See Also
Categories
Find more on 時系列、シーケンス、およびテキストを使用した深層学習 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!