Перезапуск с адамом
Я тренирую свою сеть, используя стратегию ранней остановки. Я начинаю с более высокой скорости обучения, и в связи с потерей проверки мне нужно перезапустить обучение с более раннего снимка.
Я могу сохранить / загрузить снимок с моделью и оптимизатором state_dicts
. Нет проблем с этим.
У меня вопрос: как мне снова установить скорость обучения адаму после перезапуска обучения? Должен ли я перезапустить adam fresh вместо использованияstate_dict
или я должен использоватьoptimizer.param_groups[0][‘lr’] = lr
настроить скорость обучения с загруженным оптимизатором state_dict
?
Например, я тренирую свою сеть с lr = 1e-6
на 5 эпох, сохраненная модель и оптимизатор state_dict
. Сейчас я перезагружаюсь с эпохи 6, но мне нужноlr = 1e-7
вместо. Какой для этого подход лучше всего?
Благодарность!
2 ответа
Глядя на PyTorch torch.optim.lr_scheduler
код здесь, я вижу, что они устанавливают параметр оптимизатора. Таким образом, это будет лучший подход. Я вижу это именно вstep
функция класса _LRScheduler
(по ссылке выше).
Вы можете сделать то же самое
optimizer.param_groups[0]['lr'] = lr
как вы сами упомянули.
Изучив код планировщика, я нашел правильный способ сделать это следующим образом:
def get_lr(gamma, optimizer):
return [group['lr'] * gamma
for group in optimizer.param_groups]
for param_group, lr in zip(optimizer.param_groups, get_lr(gamma, optimizer)):
param_group['lr'] = lr