Deep Learning NNet accuracy doesn't looks good

2 visualizaciones (últimos 30 días)
Dp
Dp el 20 de Sept. de 2020
Comentada: Dp el 25 de Sept. de 2020
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)

Respuesta aceptada

Madhav Thakker
Madhav Thakker el 22 de Sept. de 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 comentarios
Dp
Dp el 24 de Sept. de 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 el 25 de Sept. de 2020
Hi Madhav
thanks for yor help, Problem si now solve. Data was not enough to train you were right.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Image Data Workflows en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by