Deep Learning NNet accuracy doesn't looks good

Illustration
Emmitt - 2021-06-10T12:36:59+00:00
Question: Deep Learning NNet accuracy doesn't looks good

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)

Expert Answer

Profile picture of Neeta Dsouza Neeta Dsouza answered . 2025-11-20

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:
  1. 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.
  2. 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.


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!