2017-05-29 54 views
3

我正在使用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 
    } 
    } 
} 

在solver.prototxt中,我使用了Adam方法。我發現一個有趣的問題發生在我的案例中。如果我選擇base_lr: 1e-3,那麼當我在測試階段設置use_global_stats: false時,我獲得了很好的性能。但是,如果我選擇base_lr: 1e-4,那麼當我在測試階段設置use_global_stats: true時,我獲得了很好的性能。它證明base_lr對蝙蝠科技術設置的影響(甚至我使用Adam方法)?你能提出任何理由嗎?謝謝全部

回答

3

AFAIK學習率不是直接影響"BatchNorm"層的學習參數。事實上,無論base_lr還是求解器的type,對於該層的所有內部參數caffe力lr_mult爲零。
但是,根據您使用的base_lr,您可能會遇到相鄰圖層會聚到不同點的情況,並間接導致"BatchNorm"的行爲不同。

+0

感謝您的回答。 「相鄰層匯聚到不同點」意味着局部最優。這樣對嗎?如果它是正確的,也許學習率太小 – KimHee

+0

@KimHee通常使用「Adam」求解器,往往會將base_lr設置得比其他解算器高一點。 – Shai

+0

您認爲與SGD相比,Adam solver對所有網絡來說總是更好嗎? – KimHee

相關問題