Deep Learning NNet accuracy doesn't looks good

2 views (last 30 days)
Hi guys
Goood Afternoon
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.
Thanks in advnce.
Have a great time.
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)

Accepted Answer

Madhav Thakker
Madhav Thakker on 22 Sep 2020
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.
Hope this helps.
  2 Comments
Dp
Dp on 24 Sep 2020
Thanks heaps for your reply,
1>As you said "enough number of samples" I have collected 5000 Images so do you suggest. that I should add even more?
2>well this, I should try I completely have forgotten that (As I was just doing the simple network).
Please tell me how that If 5000 images are not enough. and I have only 1 class to classify so please tell me if I should add more then one classification for deep learning NNet. Point2 helps me but bit confused in point 1. Explanation would be appreciated.
Thanks,
DP
Dp
Dp on 25 Sep 2020
Hi Madhav
thanks for yor help, Problem si now solve. Data was not enough to train you were right.

Sign in to comment.

More Answers (0)

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!