在Caffe中设置BatchNorm图层?

时间:2017-03-05 14:10:00

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

我正在实施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的体积数据,我需要将其裁剪为32x32x32以提供给网络dueto有限的GPU。感谢

这是我当前的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
    }
  }
}

1 个答案:

答案 0 :(得分:0)

默认情况下,在batch_norm_layer.cpp中设置以下内容时,您不必在原型文本中设置use_global_stats

在batch_norm_layer.cpp中:

use_global_stats_ = this->phase_ == TEST;