Invalid training data. The output size (11) of the last layer does not match the number of classes (1).
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I want to build seven inputs, one output network. (11 classes; 1, 2, ... , 11)
I used the filedatastore and tranformed datastore type.
My CNN model's input layer is 3D image arrays for each input.
One single mat file inculded Cell array (11x8); (7 double arrays (inputs) and categorical type (label))
{10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {[1 ]}
{10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {[2 ]}
{10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {[3 ]}
{10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {[4 ]}
{10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {[5 ]}
{10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {[6 ]}
{10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {[7 ]}
{10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {[8 ]}
{10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {[9 ]}
{10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {[10]}
{10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {10×9×640 double} {[11]}
When I load the datastore, I used below code.
TrainDS=Simple_combined([File_path 'Train']);
function [trainingDatastore]=Simple_combined(folder)
tempdatastore = datastore(folder,'ReadFcn',@load,'IncludeSubfolders',1,'Type','file','FileExtensions','.mat');
trainingDatastore = transform(tempdatastore,@rearrangeData);
function out = rearrangeData(ds)
out = ds.CombinedCell;
end
end
I tried to train my model using this code.
[trainedNet, traininfo]= trainNetwork(TrainDS,lgraph,options);
The error message was this: Invalid training data. The output size (11) of the last layer does not match the number of classes (1).
I also debuged the code.
I found the "ResponseSize" and "OutputSizes" are different after "iCreateMISOTrainingDataDispatcher" in the "trainNetwork" function.
trainingDispatcher =
GeneralDatastoreDispatcher with properties:
ImageSize: {[10 9 640 1] [10 9 640 1] [10 9 640 1] [10 9 640 1] [10 9 640 1] [10 9 640 1] [10 9 640 1]}
ResponseSize: {[1 1 1 1]}
NumObservations: Inf
ResponseMetaData: [1×1 nnet.internal.cnn.response.ClassificationMetaData]
IsDone: 0
Precision: [1×1 nnet.internal.cnn.util.Precision]
EndOfEpoch: 'discardLast'
ShuffleOption: 'once'
MiniBatchSize: 10
DataLoader: [1×1 nnet.internal.cnn.DataLoader]
DataTranslator: [1×1 nnet.internal.cnn.util.DataTranslator]
CollateFunctions: [1×1 struct]
InputSizes: {[10 9 640 1] [10 9 640 1] [10 9 640 1] [10 9 640 1] [10 9 640 1] [10 9 640 1] [10 9 640 1]}
OutputSizes: {[1 1 1 11]}
UnpackCellInputOutput: 0
CanPreserveOrder: 0
CatAndSliceStrategy: [1×1 nnet.internal.cnn.util.NDArrayCatAndSliceStrategy]
RunInBackground: 0
What should I do? Please help me
0 Kommentare
Antworten (1)
Shashank Gupta
am 4 Feb. 2021
Hi Youngmin,
did you check the datastore which you created? does it have label information attached with it. My first guess looking at the error is, the datastore is not picking the label in the right format. Instead there is another way of solving this, you can use imageDatastore to construct a datastore. I am also attaching a small peice of code for your reference.
% Creating a datastore.
ds = imageDatastore('training_dataset','IncludeSubfolders',true, ...
'FileExtensions','.mat','ReadFcn',@loadMAT,'LabelSource','foldernames');
Good thing about this partiular datastore is, you can give LabelSource as name-value pair, which can take the label information automatically in accordance with the folder construction.
I hope this helps.
Cheers.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Image Data Workflows finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!