Question
I been trying to train Nnet with 5k images (3.7k for good and 1.7k for validation), but I am getting 0% accuracy. I have attached screen captures of graph with output and please see the code I am using for training. appriceate for your help. digitalDatasetPath = fullfile('D:\MatLab2020\DeeplearningCNN\test'); imdsTrain = imageDatastore(digitalDatasetPath, ... 'IncludeSubfolders', true,'FileExtensions','.jpeg','LabelSource','foldernames'); % set training dataset folder % set validation dataset folder validationPath = fullfile('D:\MatLab2020\DeeplearningCNN\train'); imdsValidation = imageDatastore(validationPath, ... 'IncludeSubfolders',true,'FileExtensions','.jpeg','LabelSource','foldernames'); % create a clipped ReLu layer layer = clippedReluLayer(10,'Name','clip1'); % define network architecture layers = [ %imageInputLayer([240 320 3], 'Normalization', 'none') imageInputLayer([300 300 3]) % conv_1 %convolution2dLayer(5,20,'Stride',1) convolution2dLayer(5,24) %batchNormalizationLayer %clippedReluLayer(10); reluLayer maxPooling2dLayer(2,'Stride',2) % fc layer fullyConnectedLayer(1) softmaxLayer classificationLayer]; % specify training option("adam_&_sgdm") %options = trainingOptions('sgdm', ... % 'MaxEpochs',20, ... % 'InitialLearnRate',0.0001, ... % 'MiniBatchSize',32, ... % 'Shuffle','every-epoch', ... % 'ValidationData',imdsValidation, ... % 'ValidationFrequency',30, ... % 'Verbose',false, ... % 'Plots','training-progress'); options = trainingOptions('sgdm', ... 'MaxEpochs',20, ... 'InitialLearnRate',1e-4, ... 'Verbose', false, ... 'Plots','training-progress') % train network using training data net = trainNetwork(imdsTrain,layers,options); % classify validation images and compute accuracy YPred = classify(net,imdsValidation); YValidation = imdsValidation.Labels; accuracy = sum(YPred == YValidation)/numel(YValidation)
Related Questions
Expert Answer
Neeta Dsouza
PhD Expert
Answered Aug 14, 2026
The loss is constantly 0 and the accuracy is 100 during training indicating that there is nothing to learn from the training data.
I see a couple of potential problems:
- Since you are using a fullyConnectedLayer(1), you have a binary classification problem. Make sure that the training data has enough number of samples from all the classes. i.e., training data is representative of your entire dataset.
- The input size of [300, 300, 3] is big enough to use a deeper network than just 1 conv layer. Sometimes, the first few layers might not be able to capture all the details from your training data, which deeper layers can help.
Have a different question? Ask here