Size of Matrix Training Data for CNN for Regression

5 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.

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 16 Aug 2021
Edited: MathWorks Support Team on 2 Sep 2021
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.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!