Перезапуск с адамом

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

Я могу сохранить / загрузить снимок с моделью и оптимизатором 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
Другие вопросы по тегам