【问题标题】:How to set lr_mult for convolutional layer in pytorch?如何在pytorch中为卷积层设置lr_mult?
【发布时间】:2019-06-26 11:05:39
【问题描述】:

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

【问题讨论】:

    标签: machine-learning deep-learning caffe pytorch


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-01-16
      • 2021-11-09
      • 2020-02-09
      • 1970-01-01
      • 1970-01-01
      • 2019-07-21
      • 2020-03-26
      • 1970-01-01
      • 2019-07-24
      相关资源
      最近更新 更多