m行n列の2次元行列データを入力としたLSTMによる時系列予測の学習方法について
Show older comments
LSTMによる時系列予測の入力データについて質問です。
こちらのページをサンプルコードとしMatlabによる時系列予測のプログラミングを練習中なのですが、最終的には5行5列の2次元行列データ(350個)を
入力データとし、その時系列予測を行いたいと考えています。
そこで上記ページのコードをもとに書き換え、一旦テストとして以下のようなコードを実行したところ、
「トレーニング シーケンスの特徴次元は 5 1495 1 ですが、入力層には特徴次元 5 5 1 のシーケンスが必要です。」
とエラーが出ました。
5行5列の行列データを300個横方向につなげ5行1500列の一つのデータセットを作成しXTrainとYTtrainを生成、
その後numFeaturesで[5 5 1]を指定することで5行5列ごとに読み込み学習するというようなイメージでいたためこのようになっています。
これを5行5列の行列データごとに学習するようにするためにはどうすればよいでしょうか?
また、numResponsesは1のままでよいのでしょうか?
至らぬ点は多々あるかと存じますが、ご教示のほどどうぞよろしくお願いいたします。
% read
path = %csv形式で保存された5行5列のデータが保存されているフォルダのパス
D = dir(path); % *.csv
dataset = [];
for k = 1:length(D)
datum = % csvファイルの読み込み
dataset = [dataset, datum]; %横方向に結合
end
%%split dataset
dataTrain = dataset(:,1:1500);
dataTest = dataset(:,1501:1750);
XTrain = dataTrain(:,1:1495);
YTrain = dataTrain(:,6:1500);
numFeatures = [5 5 1];
numResponses = 1;
numHiddenUnits = 200;
layers = [ ...
sequenceInputLayer(numFeatures)
flattenLayer('Name','flatten') % サンプルコードに追加
lstmLayer(numHiddenUnits)
fullyConnectedLayer(numResponses)
regressionLayer];
options = trainingOptions('adam', ...
'MaxEpochs',250, ...
'GradientThreshold',1, ...
'InitialLearnRate',0.005, ...
'LearnRateSchedule','piecewise', ...
'LearnRateDropPeriod',125, ...
'LearnRateDropFactor',0.2, ...
'Verbose',0, ...
'Plots','training-progress');
net = trainNetwork(XTrain,YTrain,layers,options);
Accepted Answer
More Answers (0)
Categories
Find more on Electrophysiology in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!