不同的学习率会影响batchnorm的设置。为什么?

Kim*_*Hee 5 machine-learning neural-network deep-learning caffe

我正在使用 BatchNorm 层。use_global_stats我知道通常false为训练和测试/部署而设置的设置的含义true。这是我在测试阶段的设置。

layer {
  name: "bnorm1"
  type: "BatchNorm"
  bottom: "conv1"
  top: "bnorm1"
  batch_norm_param {
    use_global_stats: true
  }
}
layer {
  name: "scale1"
  type: "Scale"
  bottom: "bnorm1"
  top: "bnorm1"
  bias_term: true
  scale_param {
    filler {
      value: 1
    }    
    bias_filler {
      value: 0.0
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在solver.prototxt中,我使用了Adam方法。我发现我的案例中出现了一个有趣的问题。如果我选择,那么当我在测试阶段base_lr: 1e-3设置时,我会得到很好的性能。use_global_stats: false然而,如果我选择,那么当我在测试阶段base_lr: 1e-4设置时,我会得到很好的性能。use_global_stats: true它证明了base_lr对批规范设置的影响(即使我使用了 Adam 方法)?你能提出任何理由吗?谢谢大家

Sha*_*hai 4

AFAIK 学习率并不直接影响层的学习参数"BatchNorm"。事实上,无论解算器如何,caffe 都会强制lr_mult该层的所有内部参数为零。 但是,您可能会遇到这样的情况:根据您使用的 ,相邻层会聚到不同的点,这会间接导致 的行为不同。base_lrtype
base_lr"BatchNorm"