MATLAB Answers

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

조회 수: 19(최근 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일
良かったです。データ、コードと用意いただいていたので回答しやすかったです。
ありがとうございます!

댓글을 달려면 로그인하십시오.

추가 답변(0개)

Community Treasure Hunt

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

Start Hunting!