m行n列の2次元行列データを入力としたLSTMによる時系列予測の学習方法について
Mostrar comentarios más antiguos
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);
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Deep Learning Toolbox en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!