MATLAB Answers

train network error. reshape number of elements must not change. Use [] to automatically calculate the dimension size.

45 views (last 30 days)
Namasi Gomathi
Namasi Gomathi on 10 May 2020
Answered: Mahesh Taparia on 12 May 2020
my input is a combined datastore of - 28x28 double input, and 1x1 categorical label.
layers = [
imageInputLayer([28 28 1],"Name","imageinput","Normalization","none")
fullyConnectedLayer(1,"Name","fc_2")
softmaxLayer("Name","softmax")
classificationLayer("Name","classoutput")];
miniBatchSize = 28;
options =
trainingOptions('adam', ...
'ExecutionEnvironment','cpu', ...
'MaxEpochs',84, ...
'MiniBatchSize',miniBatchSize, ...
'GradientThreshold',2, ...
'Shuffle','never',...
'Verbose',0, ...
'Plots','training-progress');
net = trainNetwork(cdsTrain,layers,options);
i get an error at trainnetwork script:
Error using trainNetwork (line 170)
Number of elements must not change. Use [] as one of the size inputs to automatically calculate the appropriate size for that dimension.
Caused by:
Error using reshape
Number of elements must not change. Use [] as one of the size inputs to automatically calculate the appropriate size for that dimension.
I have tried quite a few similar designs for layers, by adding a few more layers in different manners, but they all display the same error, so i suspect it has something to do with the fully connected layer.

  0 Comments

Sign in to comment.

Answers (1)

Mahesh Taparia
Mahesh Taparia on 12 May 2020
Hi
You are having an input of size MxN and you are directly reshaping it to a vector of length 1x1. Before the fullyConnectedLayer, there is a need to vectorized the features. To do this you can use flattenLayer before the fullyConnectedLayer. For more information, you can refer to this documentation of flattenLayer.

  0 Comments

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by