Я пытаюсь понять «эпохи» в обучении нейронной сети. Следующие эксперименты эквивалентны? - PullRequest
3 голосов
/ 20 марта 2020

Допустим, у меня есть обучающий образец (с соответствующими ярлыками обучения) для определенной нейронной сети (архитектура нейронной сети не имеет значения для ответа на этот вопрос). Давайте назовем нейронную сеть «моделью».

Чтобы не создавать недоразумений, допустим, что я ввел начальные веса и смещения для «модели».

Эксперимент 1.

Я использую тренировочный образец и учебные ярлыки, чтобы обучить «модель» в течение 40 эпох. После обучения нейронная сеть будет иметь определенный c набор весов и смещений для всей нейронной сети, назовем его WB_Final_experiment1.

Эксперимент 2

Я использую обучающий образец и учебные ярлыки для обучения «модели» на протяжении 20 эпох. После обучения нейронная сеть будет иметь определенный c набор весов и смещений для всей нейронной сети, назовем его WB_Intermediate.

Теперь я представляю WB_Intermediate в «модели» и тренируюсь еще на 20 эпох , После обучения нейронная сеть будет иметь определенный c набор весов и смещений для всей нейронной сети, назовем это WB__Final_experiment2.

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

Вопрос: WB_Final_experiment1 и WB__Final_experiment2 точно одинаковы?

Ответы [ 3 ]

0 голосов
/ 20 марта 2020

Как правило, нет, веса моделей не будут такими, как оптимизация будет получать свои собственные значения во время обучения. Вам нужно будет сохранить их тоже, чтобы действительно возобновить с того места, где вы остановились. См. Документацию Pytorch относительно сохранения и возобновления здесь . Но эта концепция не ограничивается платформой Pytorch.

В частности:

Важно также сохранить оптимизатор state_dict, поскольку он содержит буферы и параметры, которые обновляются как модель поезда.

0 голосов
/ 20 марта 2020

Если вы будете следовать этому уроку здесь , вы найдете результаты двух экспериментов, приведенные ниже -

Эксперимент 1

enter image description here

enter image description here

Эксперимент 2

enter image description here

enter image description here

В первом эксперименте модель работала в течение 4 эпох, а во втором эксперименте модель работала в течение 2 эпох, а затем обучалась в течение 2 больше эпох, использующих последние веса предыдущего обучения. Вы увидите, что результаты варьируются, но в очень небольшом количестве. И они всегда будут меняться из-за рандомизированной инициализации весов. Но предсказание обеих моделей будет очень близко друг к другу.

Если модели инициализируются с одинаковыми весами, то результаты в конце 4 эпох для обеих модели останутся такими же.

С другой стороны, если вы тренировались в течение 2 эпох, затем завершите тренировку, и веса не сохранятся, и если вы тренируетесь в течение 2 эпох после перезапуска, прогноз не будет прежним. Чтобы избежать этого перед тренировкой, всегда загружайте сохраненные веса, чтобы продолжить обучение, используя model.load_weights("path to model").

TL; DR

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

0 голосов
/ 20 марта 2020

Если операции, которые вы выполняете, полностью определены c, тогда да. Эпохи реализованы как число итераций для l oop вокруг вашего алгоритма обучения. Вы можете увидеть это в реализациях в PyTorch.

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