深層学習を使った時系​列予測をする際のtr​ainNetwork​関数での取り扱い

11 ビュー (過去 30 日間)
Naoto Iwaki
Naoto Iwaki 2019 年 10 月 7 日
編集済み: Kazuya 2019 年 10 月 10 日
現在深層学習を使用した時系列データ予測のうちシーケンスデータの読み込みからネットワークの学習プロセスまでを行っています。そこで下記プログラムを作成して実行したところ、trainNetwork関数のところで「無効な学習データです。予測子はシーケンスの N 1 列の cell 配列でなければなりません。ここで N はシーケンスの数です。すべてのシーケンスは同じ特徴次元と、少なくとも 1 つのタイム ステップをもたなければなりません。」と表示されました。次に、1行ずつデバッグしたところN1列のcell配列を予測子を作りlstm層などの作成までは確認できました。そこでエラーメッセージ後半の文章のほうが問題になっていると思っています。しかし、修正方法がわかりません。
ちなみに以下のプログラムは「深層学習を使用した時系列予測」などを参照にして作りました。
以下プログラム
T1=readtable('pressure_data_20190326_1.xlsx');
%T1:エクセルデータ(添付)の読み込み
%table2arraytable型配列を変更
%lambda=1.0 pressure data
T1_data=table2array(T1(4:end,2:end));
%1N列の配列へ
for i=1:300
T1_array{i}=T1_data(1:end,i);
end
%転置
T1_a=(T1_array)';
%シーケンスの最初の90%で学習を行い残りの10%でテストする
numTimeStepsTrain = floor(0.9*numel(T1_a));
T1Train = T1_a(1:numTimeStepsTrain+1);
T1Test = T1_a(numTimeStepsTrain+1:end);
%予測子と応答の準備
XT1Train = T1Train(1:end-1);
YT1Train = T1Train(2:end);
%lstmアーキテクチャ 定義
numFeatures=1;
numResponse=1;
numHiddenUnits=200;
%lstm層
layers = [ ...
sequenceInputLayer(numFeatures)
lstmLayer(200)
fullyConnectedLayer(numResponse)
regressionLayer];
%トレーニングオプション
options = trainingOptions('adam', ...
'MaxEpochs',250, ...
'GradientThreshold',1, ...
'LearnRateSchedule','piecewise', ...
'LearnRateDropPeriod',125, ...
'LearnRateDropFactor',0.2, ...
'Verbose',0, ...
'Plots','training-progress')
net = trainNetwork(XT1Train,YT1Train,layers,options);
出力結果:
エラー: trainNetwork (line □□)
無効な学習データです。予測子はシーケンスの N 1 列の cell 配列でなければなりません。ここで N はシーケンスの数です。すべてのシーケンスは同じ
特徴次元と、少なくとも 1 つのタイム ステップをもたなければなりません。
エラー: LSTM (line □□)
net = trainNetwork(XT1Train,YT1Train,layers,options);

採用された回答

Kazuya
Kazuya 2019 年 10 月 8 日
原因は XT1Train の各セルの中身がセル配列になっていることの様です。各セルの中身が例えば double 型であれば動くはず。
冒頭を以下のように変えて試してみてください。数値部分だけを readtable で読み込む設定にしました。
opts = detectImportOptions(filename,'DataRange','B4');
T1=readtable('pressure_data_20190326_1.xlsx',opts,'ReadVariableNames',false);
T1_data = T1.Variables;
%1行N列の配列へ
for i=1:300
T1_array{i}=T1_data(1:end,i)';
end
  2 件のコメント
Kazuya
Kazuya 2019 年 10 月 8 日
編集済み: Kazuya 2019 年 10 月 10 日
良かったです。データ、コードと用意いただいていたので回答しやすかったです。
ありがとうございます!

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

その他の回答 (0 件)

カテゴリ

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!