Help ME ! Error in feature input layer in CNN, Number of observations in X and Y disagree

31 views (last 30 days)
I am trying to use a deep neural network in Matlab. However, I get the error:
Number of observations in X and Y disagree.
Below is my current implementation:
[inputs, targets] = load_data();
inputs = inputs'; % size : 18000*10
targets = targets'; % size : 18000*5
randDataNum = 0.15*18000;
%% Validation Data
idx_val = randperm(size(inputs,1),randDataNum);
xVal = inputs(idx_val,:);
inputs(idx_val,:) = [];
yVal = targets(idx_val,:);
targets(idx_val,:) = [];
%% Test Data
idx_test = randperm(size(inputs,1),randDataNum);
xTest = inputs(idx_test,:);
inputs(idx_test,:) = [];
yTest = targets(idx_test,:);
targets(idx_test,:) = [];
%% Define Network Architecture
% Define the convolutional neural network architecture.
layers = [
featureInputLayer(10,'Name','inputs')
fullyConnectedLayer(30) % 384 refers to number of neurons in next FC hidden layer
batchNormalizationLayer
reluLayer
fullyConnectedLayer(30) % 384 refers to number of neurons in next FC hidden layer
reluLayer
fullyConnectedLayer(5) % 2 refers to number of neurons in next output layer (number of output classes)
regressionLayer];
options = trainingOptions('adam',...
'InitialLearnRate', 0.0001, ...
'MiniBatchSize',16, ...
'Shuffle','every-epoch', ...
'MaxEpochs',500, ...
'Verbose',false,...
'Plots','training-progress',...
'ValidationData',{xVal,yVal'});
net = trainNetwork(inputs,targets,layers,options);
how can i fix this error ?
I am using MATLAB 2021b
  1 Comment
Fahad Abdul Wahid
Fahad Abdul Wahid on 5 Aug 2022
I've some doubts regarding your function. I'm learning deep learning and wanted to know in the below function
featureInputLayer(10,'Name','inputs') - what does 10 signify?
fullyConnectedLayer(30) what does 30 signify?
fullyConnectedLayer(5) what does 5 signify?
why is there two fully connected layer? What happens when you have only 1 fully connected layer?

Sign in to comment.

Accepted Answer

Cris LaPierre
Cris LaPierre on 25 Jun 2022
Edited: Cris LaPierre on 29 Jun 2022
I see the error in this line:
'ValidationData',{xVal,yVal'});
% ^
You are transposing yVal. Assuming your input and target variables are the size you say, this is unnecessary, and causing your number of observations to disagree. Remove the apostraphe, and it should run.

More Answers (1)

Sulaymon Eshkabilov
Sulaymon Eshkabilov on 25 Jun 2022
As I see in your code the X and Y have mismacthed sizes:
inputs = inputs'; % size : 18000*10
targets = targets'; % size : 18000*5
Make sure that they have the same size when you feed them in trainNetwork().
  1 Comment
Sulaymon Eshkabilov
Sulaymon Eshkabilov on 25 Jun 2022
Another point is a proper use of size() command, while selecting some data for validation and testing using random number generator, i.e., randperm().

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!