【问题标题】:Setting for BatchNorm layer in Caffe?在 Caffe 中设置 BatchNorm 层?
【发布时间】:2017-07-25 08:43:10
【问题描述】:

我正在实施Identity Mappings in Deep Residual Networks。

conv-->BatchNorm-->ReLU

据我所知,BN 后面经常跟 Scale 层,用in_place=True 来节省内存。我没有使用当前的 caffe 版本,我使用的是 3D UNet caffe,因此,我遵循 website 中的设置。我发现,use_global_stats: false 用于 TRAIN,use_global_stats: true 用于验证和部署。但是,当我在部署中使用use_global_stats: true 时,结果很差(~30% 准确度)。如果参数设置为false,结果变好(80%准确率)。我可以在部署中设置use_global_stats: true 吗?我正在使用大小为256x128x256 的体积数据,由于GPU 有限,我需要将其裁剪为32x32x32 以提供给网络。谢谢

这是我当前的 BatchNorm +Scale 图层

layer {
  name: "bnorm1"
  type: "BatchNorm"
  bottom: "conv1"
  top: "conv1"
  param {
    lr_mult: 0
  }
  param {
    lr_mult: 0
  }
  param {
    lr_mult: 0
  }
  batch_norm_param {
    use_global_stats: false
    moving_average_fraction: 0.999
    eps: 1e-05
  }
}
layer {
  name: "scale1"
  type: "Scale"
  bottom: "conv1"
  top: "conv1"
  scale_param {
    axis: 1
    filler {
      type: "constant"
      value: 1
    }
    bias_term: true
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}

【问题讨论】:

    标签: machine-learning neural-network deep-learning caffe


    【解决方案1】:

    默认情况下,由于在batch_norm_layer.cpp中设置了以下内容,因此您根本不必在prototxt中设置use_global_stats。

    在batch_norm_layer.cpp中:

    use_global_stats_ = this->phase_ == TEST;
    

    【讨论】:

    • 谢谢。但它没有回答我的问题。我的问题是,如果我们在开发/测试阶段设置 use_global_stats=false 是否正确?
    猜你喜欢
    • 2017-02-17
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    相关资源
    最近更新 更多