如何在pytorch中为卷积层设置lr_mult?

时间:2019-02-01 20:34:46

标签: machine-learning deep-learning caffe pytorch

在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中,如何仅使用SGD设置卷积层的lr_mult?谢谢

1 个答案:

答案 0 :(得分:0)

PyTorch中没有直接等效项。学习率不是模型的一部分,而是优化方案的一部分。 There is a help page中为每个参数设置不同的学习率,因此您可以采用这种方式。如果您想让所有参数的学习率达到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()方法。