Size of Matrix Training Data for CNN for Regression
3 views (last 30 days)
Show older comments
MathWorks Support Team
on 5 Oct 2017
Edited: MathWorks Support Team
on 2 Sep 2021
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
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.
0 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!