- 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.
Deep Learning NNet accuracy doesn't looks good
1 view (last 30 days)
Show older comments
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)
0 Comments
Accepted Answer
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:
Hope this helps.
More Answers (0)
See Also
Categories
Find more on Image Data Workflows in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!