Перезапуск с Адамом - PullRequest
       62

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

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

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

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

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

Глядя дальше в код планировщика, я нашел правильный способ сделать это как:

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
0 голосов
/ 09 октября 2019

Глядя на код torch.optim.lr_scheduler PyTorch здесь , я вижу, что они устанавливают параметры оптимизатора. Таким образом, это будет лучший подход. Точное место, которое я вижу, это функция step класса _LRScheduler (в приведенной выше ссылке).

Вы можете сделать то же самое с помощью

optimizer.param_groups[0]['lr'] = lr

, как вы упоминалисами.

...