Почему GoogLeNet классифицирует все входы в один и тот же класс вывода? - PullRequest
0 голосов
/ 27 июня 2019

Кажется, у меня проблема с классификацией с помощью GoogLeNet.

Я использую данные вибрации (матрица 420 на 10002), отобранные с частотой 10 кГц.CWT данных вибрации были взяты и были получены скалограммы.Эти скелограммы использовались для обучения GoogLeNet для классификации среди шести выходных категорий: «ДЕСЯТЬ», «ДВАДЦАТЬ», «ТРИДЦАТЬ», «СРОЧНО», «ПЯТЬДЕСЯТ» и «ШЕСТЬДЕСЯТ».

Но я получаювывод «ДВАДЦАТЬ» независимо от входных данных.

Я использую cwtfilterbank для построения диаграмм.Для GoogLeNet я использовал только условия по умолчанию,

80% для проверки и 20% для проверки

MiniBatchSize = 15

MaxEpochs = от 50 до 200

InitialLearnRate = 1e-4

ValidationFrequency = 10

Я нашел оптимальное количество MaxEpoch как число с наивысшей точностью проверки.

Я прикрепил фрагменты моегокод и график моего сетевого уровня,

% Scalogram
Fs = 10000;
filb = cwtfilterbank('SignalLength',10000,'SamplingFrequency',Fs,...
'VoicesPerOctave',12);
sg = vibhistory.data(1,1:10000);
[cfs,freq] = wt(filb,sg);
t = (0:9999)/Fs;
figure;
pcolor(t,freq,abs(cfs));
% GoogLeNet
rng default
[imgTr,imgVal] = splitEachLabel(allImg,0.8,'randomized');
net = googlenet;
lgraph = layerGraph(net);
options = trainingOptions('sgdm',...
                      'MiniBatchSize',15,...
                      'MaxEpochs',120,...
                      'InitialLearnRate',1e-4,...
                      'ValidationData',imgVal,...
                      'ValidationFrequency',10,...
                      'Verbose',1,...
                      'ExecutionEnvironment','cpu',...
                      'Plots','training-progress');
rng default
mygn = trainNetwork(imgTr,lgraph,options);

Layer Graph

Я использую пример кода, приведенный на веб-сайте Mathworks для задачи классификации ЭКГ ( CWTGoogLeNet).Хотя он отлично работает для их данных, он не работает для моих.

Я много раз искал похожую проблему в Интернете и также реализовал ответы,

  1. Я попытался изменитьначальная скорость обучения
  2. Перегруппировка тренировочной партии
  3. Используются меньшие тренировочные партии (около 20 изображений)
  4. Нормализованы входные изображения

Но яя получаю только тот же вывод.

Что я здесь не так делаю?Я должен организовать учебный набор и выходные метки определенным образом или мне нужно заменить некоторые слои в сети?В чем еще может быть проблема здесь?Любая помощь будет отличной.Благодарю.

...