Error with the function 'trainNetwork'. Error: 'Invalid training data. Responses must be a vector of categorical responses, or a cell array of categorical response sequences.' Line 170.

I am attempting to train a NN to classify a Gaussian that has 4 separate classes. I have several different sample sizes, but currently I am focussing on the sample size of 500. The 'Ytrain' vector is called 'labels_train' and when entering it into the function it is 500x1 with each row corresponding to a column in x_train. x_train is a 3x500 vector with 3 features and each column corresponds to the respective row in 'labels_train'. I repeatidly get the error listed above; any idea why? Thanks a bunch.
Also when I attempt to use the categorical() function on the labels_train, I get the following error:
Invalid training data. Sequence responses must have the same sequence length as the corresponding predictors.

5 Comments

so labels_train is a structure with different row vectors (1x100, 1x200, 1x500, 1x1000, 1x2000, 1x5000) and these elements contain the true class label for the respective column in the 'x_train' matrix. For this example I am focussing on set 3, so 'labels_train' is 1x500 and 'x_train' is 3x500
The labels are integers in the range of 1-4, depending on the class for the respective column in 'x_train'
The error message is telling you to instead pass in
categorical(labels_train.set3).'
I have tried using that function, but then I get the following error:
Invalid training data. Sequence responses must have the same sequence length as the corresponding predictors.
Sorry for my incompetence, this is my first time using NNs.

Sign in to comment.

Answers (2)

Hi
I assume the first error is resolved by Walter comment.
It seems the size of 'labels_train' is 1x500 and 'x_train' is 3x500. You are making the transpose of labels while calling trainNetwork which is making labels_train as 500X1 and hence size of input and labels are not consistent. The work around is keep the size of 'x_train' as 500X3 and 'labels_train' as 500X1. Or consider the below code:
net=trainNetwork(x_train.set3',labels_train.set3',layers,options);
Hope it will helps!

2 Comments

As, I am also getting the same error I am posting here.
I am getting the following error
Error using trainNetwork (line 154)
Invalid training data. Responses must be a vector of categorical responses, or a cell array of categorical response
sequences.
Error in five (line 27)
net = trainNetwork(XTrain,YTrain,layers,options);
In my code, XTrain and YTrain are same which is 3x1 cell. Inside each array both Xtrain and Ytrain has 12x1double, 12x 2double, 12 x3double. Could you provide me any advice for solving it.

Sign in to comment.

I get the same error. I set Xtrain to 'categorical' and Outputmode in latmLayer to 'last'. Then it can be trained.

Asked:

on 13 Nov 2020

Answered:

伟
on 12 Feb 2025

Community Treasure Hunt

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

Start Hunting!