#deep-learning #pytorch #faster-rcnn
Вопрос:
Я читаю статью о модели Fast-RCNN.
В разделе 2.3 статьи «Гиперпараметры SGD» говорится, что все уровни используют скорость обучения на уровне 1 для весов и 2 для смещений, а глобальная скорость обучения составляет 0,001
Является ли «скорость обучения для каждого слоя» такой же, как «скорость обучения для конкретного слоя», которая дает разную скорость обучения по слоям? Если это так, я не могу понять, как они («скорость обучения на уровне» и «глобальная скорость обучения») могут применяться одновременно?
Я нашел пример «скорости обучения, зависящей от уровня» в pytorch.
optim.SGD([
{'params': model.some_layers.parameters()},
{'params': model.some_layers.parameters(), 'lr': 1}
], lr=1e-3, momentum=0.9)
Согласно статье, является ли это правильным подходом?
Извините за майский английский
Ответ №1:
Терминология для каждого слоя в этой статье несколько неоднозначна. Они не имеют в виду скорость обучения для конкретного уровня.
Все уровни используют скорость обучения на уровне 1 для весов и 2 для смещений, а глобальная скорость обучения составляет 0,001.
Соответствующее заявление представляет собой структуру w.r.t. Caffe, в которой изначально был написан Fast R-CNN (ссылка на github).
Они имели в виду, что они устанавливают множитель скорости обучения весов и смещений равным 1 и 2 соответственно.
Проверьте любой prototxt
файл в репозитории, например, CaffeNet/train.prototxt.
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
Таким образом, эффективная скорость обучения будет base_lr*lr_mult
, и здесь базовая скорость обучения составляет 0,001, что определено в solver.prototxt
.
Комментарии:
1. Это не просто «слегка» двусмысленно, это полностью меняет смысл ИМО.
2. @ayandas ты мог бы сказать так 🙂
3. Спасибо вам за вашу помощь. Я все ясно понимаю!!