Я получаю 0-процентную точность при использовании 3-кратной перекрестной проверки - PullRequest
0 голосов
/ 26 февраля 2019

Я хочу обучить CNN, который будет k-кратно перекрестно проверен.для этого я разделил свой набор данных подписи на три равные части.с использованием двух частей происходит обучение, а из оставшейся части будет проведено тестирование.этот процесс будет выполнен трижды при k = 3.Я использую 3-кратную перекрестную проверку в Matlab.но когда я тестирую сеть, это дает 0% точности, насколько это возможно.Может кто-нибудь, пожалуйста, помогите мне, какую ошибку я совершаю?

k = 3; % number of folds
datastore = imageDatastore(fullfile('/media/titan/ACER 
DATA/GPDS300'), 'IncludeSubfolders', true, 'LabelSource', 'foldernames');

partStores{k} = [];
for i = 1:k
  temp = partition(datastore, k, i);
   partStores{i} = temp.Files;
end
layers = [imageInputLayer([64 128 3]);
      convolution2dLayer(7,40);
      reluLayer();
     fullyConnectedLayer(200);
      softmaxLayer();
      classificationLayer()]; 

options = trainingOptions('sgdm','MaxEpochs',150,'minibatchsize',32,...
'InitialLearnRate',0.001);  
for i = 1:k
test_idx = (idx == i);
train_idx = ~test_idx;

test_Store = imageDatastore(partStores{test_idx}, 'IncludeSubfolders', true, 'LabelSource', 'foldernames');
train_Store = imageDatastore(cat(1, partStores{train_idx}), 'IncludeSubfolders', true, 'LabelSource', 'foldernames');


net{i} = trainNetwork(train_Store, layers, options);
pred{i} = classify(net{i}, test_Store);


TTest=test_Store.Labels;
accuracyn{i} = sum(pred{i} == TTest)/numel(TTest) 
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...