Как использовать Adam optim, учитывая его адаптивную скорость обучения? - PullRequest
2 голосов
/ 13 мая 2019

В алгоритме оптимизации Адама скорость обучения регулируется в соответствии с количеством итераций.Я не совсем понимаю дизайн Адама, особенно при использовании пакетного обучения.При использовании пакетного обучения, если имеется 19 200 изображений, каждый раз при обучении 64 изображений это эквивалентно 300 итерациям.Если в нашу эпоху 200 раз, то в общей сложности 60000 итераций.Я не знаю, уменьшат ли такие множественные итерации скорость обучения до очень маленького размера.Поэтому, когда мы тренируемся, мы будем инициализировать оптимизатор после каждой эпохи или ничего не делать на протяжении всего процесса?

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

Например, я не знаю, верны ли эти две части кода:

optimizer = optim.Adam(model.parameters(), lr=0.1)
for epoch in range(100):
    ###Some code
    optim.step()

Другой фрагмент кода:

for epoch in range(100):
    optimizer = optim.Adam(model.parameters(), lr=0.1)
    ###Some code
    optim.step()

1 Ответ

0 голосов
/ 13 мая 2019

Вы можете прочитать официальную статью здесь https://arxiv.org/pdf/1412.6980.pdf

Ваше обновление выглядит примерно так (ради краткости, я пропустил фазу прогрева):

new_theta = old_theta-learning_rate*momentum/(velocity+eps)

Интуиция заключается в том, что если momentum> velocity, то оптимизатор находится на плато, поэтому значение learning_rate увеличивается, поскольку momentum/velocity > 1.с другой стороны, если momentum <<code>velocity, то оптимизатор находится в крутом склоне или в шумной области, поэтому learning_rate уменьшается.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...