複数入力から一つの出力を出すLSTMの作成

31 views (last 30 days)
saiya mizushima
saiya mizushima on 22 Nov 2021
Commented: Naoya on 18 Jun 2024
LSTMを使用して1100×1の時系列データを3つ入力として入れて,一つの出力(1100×1)を出すようなコードを考えています.3つの時系列データはそれぞれ異なる単位を持つ変数で,データ数は400です.
以下の例からLSTMで実現可能だと思うのですが初心者なので正しく理解できていない可能性があります
深層学習を使用してエンジンの残存耐用期間 (RUL) を予測する
そこでLSTMでそのようなシステムが可能かどうかお聞きしたいです.
初心者で必要な判断に必要な情報が抜けていましたら申し訳ありませんがよろしくお願いいたします.

Answers (1)

Naoya
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
yasuyuki Imai
yasuyuki Imai on 18 Jun 2024
この学習後のnetはどう使うのでしょうか?
例えばで例を書いていただけると助かります。
Naoya
Naoya on 18 Jun 2024
学習済のネットワーク "net" は、下記のように predict 関数を使って、新たな時系列データ z_indata に対して、その推論値を z_outdata として出力することができます。
z_indata = rand(3,100);
z_outdata = predict(net, z_indata);

Sign in to comment.

Categories

Find more on 時系列、シーケンス、およびテキストを使用した深層学習 in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!