2017-03-05 88 views
0

我正在實施Identity Mappings in Deep Residual Networks設置Caffe中的BatchNorm圖層?

conv-->BatchNorm-->ReLU 

正如我所知,BN通常之後是尺度層和用於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以供給網絡有限的GPU。由於

這是我目前BatchNorm +縮放層

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

默認情況下,如以下是batch_norm_layer.cpp設置,您不必設置use_global_stats都在prototxt。

在batch_norm_layer.cpp:

use_global_stats_ = this->phase_ == TEST; 
+0

謝謝。但它不回答我的問題。我的問題是,如果我們在開發/測試階段設置use_global_stats = false,那麼它是正確的嗎? – user3051460