- 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 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Madhav Thakker
2020 年 9 月 22 日
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.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Image Data Workflows についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!