Как установить lr_mult для сверточного слоя в pytorch? - PullRequest
0 голосов
/ 01 февраля 2019

В caffe он имеет возможность установить обучающее множество для свертки следующим образом

layer {
  name: "conv1a"
  type: "Convolution"
  bottom: "data"
  top: "conv1a"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  convolution_param {
    num_output: 64
    kernel_size: 3
    pad: 1
    stride: 1    
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}

В pytorch, как установить lr_mult для сверточного слоя только с SGD?Спасибо

1 Ответ

0 голосов
/ 02 февраля 2019

В PyTorch нет прямого эквивалента.Скорость обучения считается не частью модели, а схемы оптимизации. Существует страница справки по настройке различных скоростей обучения для параметра, поэтому вы можете сделать это следующим образом.Если вы хотите, чтобы все ваши параметры имели скорость обучения 1., кроме conv1a, который должен иметь 0.5, вы можете сделать это следующим образом:

fast_parameters = []
slow_parameters = []
for name, parameter in model.named_parameters():
    if 'conv1a' in name:
        slow_parameters.append(parameter)
     else:
        fast_parameters.append(parameter)

optimizer = optim.SGD([
    {'params': slow_parameters, 'lr': 0.5},
    {'params': fast_parameters}
], lr=1.)

, где я делаюиспользование метода named_parameters().

...