Invalid training data. Sequence responses must have the same sequence length as the corresponding predictors.
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Nathaniel Porter
am 4 Mär. 2022
Beantwortet: Walter Roberson
am 4 Mär. 2022
Confused as to why categorical did nto work is there somwhere else that I need to fix
clc; clear all; close all;
load Projectdata.mat
% Split Data Glucose
GlucoseReadings_T = GlucoseReadings';
GlucoseReadings_train = GlucoseReadings_T;
train_GlucoseReadings = GlucoseReadings_train(1:84,:);
train_GR_output = GR_output(1:17);
% Data Batch Glucose
GlucoseReadingsTrain=(reshape(train_GlucoseReadings', [1749,84]));
val_GlucoseReadings = GlucoseReadings_train(85:102,:);
val_GR_output = GR_output(85:102);
GlucoseReadingsVal=(reshape(val_GlucoseReadings', [1749,18]));
test_GlucoseReadings =GlucoseReadings_train(103:120,:);
test_GR_output = GR_output(103:120);
GlucoseReadingsTest=(reshape(test_GlucoseReadings', [1749,18]));
numFeatures = size(GlucoseReadings_T,2);
% number of hidden units represent the size of the data
numHiddenUnits = 120;
%number of classes repsresnt healthy and diabetic
numClasses = length(categories(categorical(GR_output)));
layers = [ ...
sequenceInputLayer(numFeatures)
%dropoutLayer(0.5)
instanceNormalizationLayer
bilstmLayer(round(numHiddenUnits/2),'OutputMode','sequence')
fullyConnectedLayer(numClasses)
instanceNormalizationLayer
softmaxLayer
classificationLayer];
options = trainingOptions('adam', ...
'MaxEpochs',100, ...
'GradientThreshold',1, ...
'Verbose',false, ...
'ValidationData',{GlucoseReadingsVal, val_GR_output},...
'LearnRateDropFactor',0.2,...
'LearnRateDropPeriod',5,...
'Plots','training-progress');
% Train
whos
net = trainNetwork(GlucoseReadingsTrain,categorical(train_GR_output),layers,options);
% Test
miniBatchSize = 27;
GR_outputPred = classify(net,GlucoseReadingsTest,...
'MiniBatchSize',miniBatchSize,...
'Environment','cpu');
acc = mean(GR_outputPred(:) == categorical(test_GR_output(:)))
figure
t = confusionchart(categorical(test_GR_output(:)),GR_outputPred(:));
figure
t1 = confusionchart(categorical(test_INS_output(:)),INS_outputPred(:));
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 4 Mär. 2022
net = trainNetwork(GlucoseReadingsTrain,categorical(train_GR_output),layers,options);
Your GlucoseReadingsTrain is 1749 x 84
Your train_GR_output is 1 x 18
There isn't anything remotely compatible about those.
You should not be training on a single data set. You should be creating a dataset that has samples from all of your classes, and the corresponding section parameter should indicate which class each sample belongs to.
As I advised you before, you should be creating a variable to hold the number of training samples for each class, and the number of test samples, and you should be creating subsets using code similar to
class1_training = class1_data(1:number_class1_train,:);
class1_test = class1_data(number_class1_train+1:number_class1_train+number_class1_test,:);
class1_valid = class1_data(number_class1_train+number_class1_test+1:end,:);
response1_training = class1_response(1:number_class1_train,:);
response1_test = class1_response(number_class1_train+1:number_class1_train+number_class1_test,:);
response1_valid = class1_response(number_class1_train+number_class1_test+1:end,:);
%more stuff
training_data = [class1_training; class2_training];
response_data = categorical([response1_training; response2_training]);
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Image Data Workflows finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!