Каково влияние lr_mult = 0? - PullRequest
0 голосов
/ 15 мая 2018

Я смотрю на некоторый код построения сети Caffe (в файле BerkeleyVision pascalcontext-fcn8s net.py) и нахожу эту строку:

L.Deconvolution(n.score_fr,
    convolution_param=dict(num_output=60, kernel_size=4, stride=2,
        bias_term=False),
    param=[dict(lr_mult=0)])

Мне интересно, что означает термин lr_mult = 0. Мое первое предположение после просмотра документации состоит в том, что это должно предотвратить любые обновления весов ядра, но это кажется странным, потому что я предполагаю, что инициализация по умолчанию является случайной. Что это делает? Есть ли где-нибудь другой код или файл параметров, который инициализирует ядро?

1 Ответ

0 голосов
/ 16 мая 2018
  1. Вы правы.Установка lr_mult=0 замораживает веса слоя.Веса останутся фиксированными и не будут меняться от своих начальных значений на протяжении всего обучения.
  2. Если вы будете следовать коду, вы увидите вызов surgery.interp, эта функция устанавливает начальные веса слоя масштабирования до начала обучения .Веса остаются фиксированными к этим значениям из-за lr_mult=0.
...