Я просматривал базовый пример PyTorch MNIST здесь и заметил, что при смене оптимизатора с SGD на Adam модель не сходилась.В частности, я изменил строку 106 с
optimizer = optim.SGD(model.parameters(), lr=args.lr, momentum=args.momentum)
на
optimizer = optim.Adam(model.parameters(), lr=args.lr)
Я думал, что это не повлияет на модель.С SGD потери быстро упали до низких значений примерно через четверть эпохи.Однако с Адамом потери не уменьшились вообще даже после 10 эпох.Мне любопытно, почему это происходит;мне кажется, они должны иметь почти одинаковую производительность.
Я запустил это на Win10 / Py3.6 / PyTorch1.01 / CUDA9
И чтобы сэкономить вам немного времени на копание кода, здесьгиперпараммы:
- lr = 0,01
- импульс = 0,5
- batch_size = 64