我正在实施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
}
}
}
答案 0 :(得分:0)
默认情况下,在batch_norm_layer.cpp中设置以下内容时,您不必在原型文本中设置use_global_stats
。
在batch_norm_layer.cpp中:
use_global_stats_ = this->phase_ == TEST;