Azzera filtri
Azzera filtri

Invalid training data. For classification tasks, responses must be a vector of categorical responses. For regression tasks, responses must be a vector, a matrix, or a 4-D arra

22 visualizzazioni (ultimi 30 giorni)
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);
%Split Data Insulin
InsulinReadings_T = InsulinReadings';
InsulinReadings_train = InsulinReadings_T;
train_InsulinReadings = InsulinReadings_train(1:84,:);
train_INS_output = INS_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);
%Data Batch Insulin
InsulinReadingsTrain=(reshape(train_InsulinReadings', [1758,84]));
val_InsulinReadings = InsulinReadings_train(85:102,:);
val_INS_output = INS_output(85:102);
InsulinReadingsVal=(reshape(val_InsulinReadings', [1758,18]));
test_InsulinReadings = InsulinReadings_train(103:120,:);
test_INS_output = INS_output(103:120);
InsulinReadingsTest=(reshape(test_InsulinReadings', [1758,18]));
numFeatures1 = size(InsulinReadings_T,2);
% number of hidden units represent the size of the data
numHiddenUnits = 120;
%number of classes represent different patients normal,LIS,type2....
numClasses = length(categories(categorical(GR_output)));
numClasses1 = length(categories(categorical(INS_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},...
'ValidationData',{InsulinReadingsVal, val_INS_output},...
'LearnRateDropFactor',0.2,...
'LearnRateDropPeriod',5,...
'Plots','training-progress');
% Train
whos
Name Size Bytes Class Attributes GR_output 1x120 7296 string GlucoseReadings 1749x120 1679040 double GlucoseReadingsTest 1749x18 251856 double GlucoseReadingsTrain 1749x84 1175328 double GlucoseReadingsVal 1749x18 251856 double GlucoseReadings_T 120x1749 1679040 double GlucoseReadings_train 120x1749 1679040 double INS_output 1x120 7296 string InsulinReadings 1758x120 1687680 double InsulinReadingsTest 1758x18 253152 double InsulinReadingsTrain 1758x84 1181376 double InsulinReadingsVal 1758x18 253152 double InsulinReadings_T 120x1758 1687680 double InsulinReadings_train 120x1758 1687680 double layers 7x1 3332 nnet.cnn.layer.Layer numClasses 1x1 8 double numClasses1 1x1 8 double numFeatures 1x1 8 double numFeatures1 1x1 8 double numHiddenUnits 1x1 8 double options 1x1 254865 nnet.cnn.TrainingOptionsADAM test_GR_output 1x18 1248 string test_GlucoseReadings 18x1749 251856 double test_INS_output 1x18 1248 string test_InsulinReadings 18x1758 253152 double train_GR_output 1x17 1048 string train_GlucoseReadings 84x1749 1175328 double train_INS_output 1x17 1048 string train_InsulinReadings 84x1758 1181376 double val_GR_output 1x18 1248 string val_GlucoseReadings 18x1749 251856 double val_INS_output 1x18 1248 string val_InsulinReadings 18x1758 253152 double
net = trainNetwork(GlucoseReadingsTrain,train_GR_output,layers,options);
Error using trainNetwork (line 184)
Invalid training data. For classification tasks, responses must be a vector of categorical responses. For regression tasks, responses must be a vector, a matrix, or a 4-D array of numeric responses which must not contain NaNs.
net1 = trainNetwork(InsulinReadingsTrain,train_INS_output,layers,options);
% Test
miniBatchSize = 27;
GR_outputPred = classify(net,GlucoseReadingsTest,...
'MiniBatchSize',miniBatchSize,...
'Environment','cpu');
acc = mean(GR_outputPred(:) == categorical(test_GR_output(:)))
acc1 = mean(INS_outputPred(:) == categorical(test_INS_output(:)))
figure
t = confusionchart(categorical(test_GR_output(:)),GR_outputPred(:));
figure
t1 = confusionchart(categorical(test_INS_output(:)),INS_outputPred(:));

Risposta accettata

Walter Roberson
Walter Roberson il 4 Mar 2022
net = trainNetwork(GlucoseReadingsTrain, categorical(train_GR_output), layers,options);
  2 Commenti
Nathaniel Porter
Nathaniel Porter il 4 Mar 2022
This however did not work it produced the error seen below:
Invalid training data. Sequence responses must have the same sequence length as the corresponding
predictors.
Walter Roberson
Walter Roberson il 4 Mar 2022
train_GR_output = GR_output(1:17);
That response should only be used with an input of size 17.
You should not be training on data only from one class: you should be training on data from all of your classes.

Accedi per commentare.

Più risposte (1)

yanqi liu
yanqi liu il 7 Mar 2022
clc; clear all; close all;
load Projectdata.mat
% Split Data Glucose
GR_output=categorical(GR_output);
INS_output=categorical(INS_output);
GlucoseReadings_T = GlucoseReadings';
GlucoseReadings_train = GlucoseReadings_T;
train_GlucoseReadings = GlucoseReadings_train(1:84,:);
train_GR_output = GR_output(1:84);
%Split Data Insulin
InsulinReadings_T = InsulinReadings';
InsulinReadings_train = InsulinReadings_T;
train_InsulinReadings = InsulinReadings_train(1:84,:);
train_INS_output = INS_output(1:84);
% 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);
%Data Batch Insulin
InsulinReadingsTrain=(reshape(train_InsulinReadings', [1758,84]));
val_InsulinReadings = InsulinReadings_train(85:102,:);
val_INS_output = INS_output(85:102);
InsulinReadingsVal=(reshape(val_InsulinReadings', [1758,18]));
test_InsulinReadings = InsulinReadings_train(103:120,:);
test_INS_output = INS_output(103:120);
InsulinReadingsTest=(reshape(test_InsulinReadings', [1758,18]));
numFeatures1 = size(InsulinReadings_T,2);
% number of hidden units represent the size of the data
numHiddenUnits = 120;
%number of classes represent different patients normal,LIS,type2....
numClasses = length(categories(categorical(GR_output)));
numClasses1 = length(categories(categorical(INS_output)));
layers = [ ...
sequenceInputLayer(numFeatures)
dropoutLayer(0.5)
%instanceNormalizationLayer
bilstmLayer(round(numHiddenUnits/2),'OutputMode','sequence')
fullyConnectedLayer(numClasses)
%instanceNormalizationLayer
dropoutLayer(0.5)
softmaxLayer
classificationLayer];
layers1 = [ ...
sequenceInputLayer(numFeatures1)
dropoutLayer(0.5)
%instanceNormalizationLayer
bilstmLayer(round(numHiddenUnits/2),'OutputMode','sequence')
fullyConnectedLayer(numClasses)
%instanceNormalizationLayer
dropoutLayer(0.5)
softmaxLayer
classificationLayer];
options = trainingOptions('adam', ...
'MaxEpochs',100, ...
'GradientThreshold',1, ...
'Verbose',false, ...
'ValidationData',{GlucoseReadingsVal, val_GR_output},...
'LearnRateDropFactor',0.2,...
'LearnRateDropPeriod',5,...
'Plots','training-progress');
options1 = trainingOptions('adam', ...
'MaxEpochs',100, ...
'GradientThreshold',1, ...
'Verbose',false, ...
'ValidationData',{InsulinReadingsVal, val_INS_output},...
'LearnRateDropFactor',0.2,...
'LearnRateDropPeriod',5,...
'Plots','training-progress');
% Train
% whos
net = trainNetwork(GlucoseReadingsTrain,train_GR_output,layers,options);
net1 = trainNetwork(InsulinReadingsTrain,train_INS_output,layers1,options1);
% Test
miniBatchSize = 27;
GR_outputPred = classify(net,GlucoseReadingsTest,...
'MiniBatchSize',miniBatchSize,...
'ExecutionEnvironment','cpu');
acc = mean(GR_outputPred(:) == categorical(test_GR_output(:)))
INS_outputPred = classify(net1,InsulinReadingsTest,...
'MiniBatchSize',miniBatchSize,...
'ExecutionEnvironment','cpu');
acc1 = mean(INS_outputPred(:) == categorical(test_INS_output(:)))
figure
t = confusionchart(categorical(test_GR_output(:)),GR_outputPred(:));
figure
t1 = confusionchart(categorical(test_INS_output(:)),INS_outputPred(:));

Categorie

Scopri di più su Sequence and Numeric Feature Data Workflows in Help Center e File Exchange

Prodotti


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by