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

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

回答 (1 件)

Naoya
Naoya 2021 年 11 月 25 日
複数の時系列を学習させる場合は、 入力データおよび教師データを 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 件のコメント
yasuyuki Imai
yasuyuki Imai 2024 年 6 月 18 日
この学習後のnetはどう使うのでしょうか?
例えばで例を書いていただけると助かります。
Naoya
Naoya 2024 年 6 月 18 日
学習済のネットワーク "net" は、下記のように predict 関数を使って、新たな時系列データ z_indata に対して、その推論値を z_outdata として出力することができます。
z_indata = rand(3,100);
z_outdata = predict(net, z_indata);

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeDeep Learning Toolbox についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!