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



在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?谢谢

在 PyTorch 中没有直接的等价物。学习率不被视为模型的一部分,而是优化方案的一部分。有一个关于为每个参数设置不同学习率的帮助页面,因此您可以这样做。如果你想让你所有的参数都有 1. 的学习率,除了应该有0.5conv1a,你可以这样做:

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()方法的地方。

最新更新