# Size of Matrix Training Data for CNN for Regression

33 views (last 30 days)
I am trying to use a CNN to solve a regression problem. I have a 64 by 2048 vector as input training data. I am trying to make an auto-encoder, so this is also the size of my output training data.
The command below gives me the error shown
net = trainNetwork(X,X,lgraph,options);
Error using trainNetwork (line 140)
Invalid training data. X and Y must have the same number of observations.
What does this error mean? 'X' and 'Y' are the same matrix, so I do not understand how they have a different number of observations.

MathWorks Support Team on 18 Apr 2018
If you look closely at the documentation for "trainNetwork", you can see that the input data can be a 4D Numeric Matrix, and the output can be a 2D Numeric matrix for regression. This documentation is linked below:
This input format is required because the input layer more or less expects to treat each as an h by w by c image, where h is height, w is width, and c is the number of channels in the image. This requires you to initialize extra dimensions as a placeholder in the input. Note that you must do this for your training and validation data. To do this, you can transform 'X' as below:
Xnew = reshape(x, [size(x,1),1,1,size(x,2)]);
Similarly, you must transform the output training data to be a Number of Observations by Number of Response Variables matrix. This can be done by simply setting this to the transpose of 'X'. Again, this must be done for both training and validation data.
##### 1 CommentShowHide None
Ben Hur on 20 Nov 2017
@ MathWorks Support Team , Can you please explain more as I have the same problem. I did what you doing but still the same problem. Is the 64 the observation? also what did you mean by the three line in the end.
My training data is 18000x24000 , the 18000 is the observation (each is a single image) and the 24000 is the feature.

### More Answers (2)

Ling Zhang on 28 Mar 2018
I encountered the same problem by using trainedNet = trainNetwork(X_train,Y_train,layers,options); My X_train is a 4D matrix, and Y_train is a 2D matrix.
But then I changed it Y_train to Y_train', and it works!
trainedNet = trainNetwork(X_train,Y_train',layers,options)
##### 1 CommentShowHide None
TIRUPATHI RAO ALTHI on 6 Oct 2019
I encountered the same problem by using trainedNet = trainNetwork(X_train,Y_train,layers,options); My X_train is a 4D matrix, and Y_train is a 2D matrix.
But then I changed it Y_train to Y_train', and it works!
trainedNet = trainNetwork(X_train,Y_train',layers,options)
thank you Ling Zhang

Bhartendu on 8 Apr 2018
Related query: Check this Link

R2017b

### Community Treasure Hunt

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

Start Hunting!