Error in training data sequence length. How to rectify this?
조회 수: 3 (최근 30일)
이전 댓글 표시
Hi,
I am creating cnn+lstm architecture for prediction. When I am training the model, I am getting error " Error using trainNetwork: Invalid training data. Sequence responses must have the same sequence length as the corresponding predictors."
the code is below. The sample data is attached here.
data = xlsread("sample_data.xlsx", 1);
data_norm = normalize(data(:,1:end));
train_ratio = 0.8;
n_train = round(size(data,1) * train_ratio);
train_data = data(1:n_train,:);
test_data = data(n_train+1:end,:);
numFeatures = size(train_data,2)-1;
XTrain = train_data(:,1:end-1);
YTrain = train_data(:,end);
XTest = test_data(:,1:end-1);
YTest = test_data(:,end);
sequenceLength = 1;
% Reshape the input sequences
numTrain = floor(size(train_data,1)/sequenceLength);
XTrain = XTrain(1:numTrain*sequenceLength,:);
YTrain = YTrain(1:numTrain*sequenceLength,:);
XTrain = reshape(XTrain, [1, sequenceLength, numFeatures, numTrain]);
YTrain = reshape(YTrain, [1, sequenceLength, 1, numTrain]);
numValidation = floor(size(test_data,1)/sequenceLength);
XTest = XTest(1:numValidation*sequenceLength,:);
YTest = YTest(1:numValidation*sequenceLength,:);
XTest = reshape(XTest, [1, sequenceLength, numFeatures, numValidation]);
YTest = reshape(YTest, [1, sequenceLength, 1, numValidation]);
% the CNN LSTM model
inputSize = [1 size(XTrain,2) size(XTrain,3)];
numHiddenUnits = 64;
numClasses = 1;
layers = [ ...
sequenceInputLayer(inputSize)
convolution2dLayer([1 3],16,'Padding','same')
batchNormalizationLayer
reluLayer
convolution2dLayer([1 3],32,'Padding','same')
batchNormalizationLayer
reluLayer
convolution2dLayer([1 3],64,'Padding','same')
batchNormalizationLayer
reluLayer
flattenLayer
lstmLayer(numHiddenUnits,'OutputMode','sequence')
fullyConnectedLayer(numClasses)
regressionLayer];
% Specify the training options
options = trainingOptions('adam', ...
'MaxEpochs',50, ...
'MiniBatchSize',32, ...
'ValidationData',{test_data(:,1:end-1), test_data(:,end)}, ...
'ValidationFrequency',10, ...
'Shuffle','every-epoch', ...
'Plots','training-progress');
% Train the CNN LSTM model
net = trainNetwork(XTrain,YTrain, layers, options);
As for my analysis, the dimension seems to be correct. However I couldnot rectify this error.
Please help me to rectify this error.
댓글 수: 0
답변 (1개)
Pravarthana P
2023년 5월 8일
Hi,
This error occurs when the input value to ‘sequenceInputLayer’ is different from the ‘numFeatures’ in ‘XTrain’ data.
Changing the 'inputSize' in the code according to the 'XTrain' data might help. For more information, refer to the following documentation link :
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Sequence and Numeric Feature Data Workflows에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!