Почему, когда я тренирую сетевую модель несколько раз, я получаю разные обученные модели и разные результаты? - PullRequest
0 голосов
/ 23 октября 2019

Почему, когда я тренирую сетевую модель для одних и тех же опций и одной и той же базы данных, я получаю разные обученные модели и результаты, у меня разная классификация результатов.

1) У меня есть цикл дляобучить n-раз модели нейронной сети

2) Я установил одинаковые параметры обучения

3) У меня есть одна база данных для обучения и тестирования

4) Я использую то же самоеПредварительно обученная модель (например, google net)

И, наконец, каждый раз (n = 1,2,3) у меня появляются разные результаты классификации. Различия даже равны 10 процентным пунктам


база данных - изображения лиц (всегда читают одну и ту же базу данных не случайно) - я использовал модели, предварительно обученные из Matlab и предварительно обученные только на изображениях лиц из github.

opts = trainingOptions('sgdm', ...
    'MaxEpochs',1, ... %5  50
    'MiniBatchSize',100,... %64  10
    'InitialLearnRate',5e-5,... 
    'ExecutionEnvironment','gpu',...
    'Shuffle','every-epoch', ...
    'Plots','training-progress');

Если некоторые параметры не определены, это означает, что по умолчанию.

1 Ответ

0 голосов
/ 23 октября 2019

Ваш скрипт не полностью определен параметрами, которые вы упоминаете. Кроме того, задействовано случайных семян . Когда вы используете предварительно обученные модели, вы должны повторно инициализировать последние несколько слоев. Использование полных предварительно обученных параметров часто может привести к сближению с плохими локальными минимумами.

Может быть, вы уже это делаете, тогда оттуда происходит случайность. Кроме того, я предполагаю, что вы тренируетесь периодическиЕсли вы не укажете случайное начальное число, партии для каждого прогона будут разными, поскольку экземпляры, содержащиеся в каждом пакете, выбираются в соответствии со случайным начальным числом.

Представление обучающих примеров NN в разных порядках приводит к разным результатам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...