Неловкое поведение оптимизатора Pytorch Adam?лучше с перезагрузкой? - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь обучить текстовый классификатор CNN с помощью Pytorch.Я использую оптимизатор Адама следующим образом.

optimizer = torch.optim.Adam(CNN_Text.parameters(), lr=args.lr)

Я понял, что оптимизатор сходится очень быстро, а затем он продолжает медленно снижать точность.(потеря проверки достоверности значительно уменьшается через 1-2 минуты, затем она продолжает медленно расти)

Итак, я реализовал снижение скорости обучения,

If curr_loss > val_loss: prev_lr = param_group['lr'] param_group['lr'] = prev_lr/10

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

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

Может кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 07 декабря 2018

Что такое param_group?С этим фрагментом кода он выглядит как переменная, никак не связанная с оптимизатором.То, что вам нужно изменить, - это запись 'lr' каждого элемента в optimizer.param_groups, то есть то, на что на самом деле смотрит ADAM.

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

...