gpt4 book ai didi

machine-learning - "BatchNorm"层在caffe中应该如何使用?

转载 作者:行者123 更新时间:2023-11-30 08:22:51 24 4
gpt4 key购买 nike

我对如何使用/插入"BatchNorm"有点困惑我的模型中的图层。
我看到了几种不同的方法,例如:

ResNets : "BatchNorm"+"Scale" (无参数共享)

“BatchNorm” 层紧随其后的是 “Scale” 层:

layer {
bottom: "res2a_branch1"
top: "res2a_branch1"
name: "bn2a_branch1"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}

layer {
bottom: "res2a_branch1"
top: "res2a_branch1"
name: "scale2a_branch1"
type: "Scale"
scale_param {
bias_term: true
}
}

cifar10 example :仅“BatchNorm”

在caffe提供的cifar10示例中,使用了“BatchNorm”,后面没有任何“Scale”:

layer {
name: "bn1"
type: "BatchNorm"
bottom: "pool1"
top: "bn1"
param {
lr_mult: 0
}
param {
lr_mult: 0
}
param {
lr_mult: 0
}
}

cifar10 TRAINTEST

batch_norm_param 不同

batch_norm_param:use_global_scaleTRAINTEST阶段之间更改:

layer {
name: "bn1"
type: "BatchNorm"
bottom: "pool1"
top: "bn1"
batch_norm_param {
use_global_stats: false
}
param {
lr_mult: 0
}
param {
lr_mult: 0
}
param {
lr_mult: 0
}
include {
phase: TRAIN
}
}
layer {
name: "bn1"
type: "BatchNorm"
bottom: "pool1"
top: "bn1"
batch_norm_param {
use_global_stats: true
}
param {
lr_mult: 0
}
param {
lr_mult: 0
}
param {
lr_mult: 0
}
include {
phase: TEST
}
}

那么它应该是什么?

应该如何在caffe中使用“BatchNorm”层?

最佳答案

如果您遵循原始论文,则 Batch 归一化后面应该是 Scale 和 Bias 层(可以通过 Scale 包含偏差,尽管这会使 Bias 参数无法访问)。 use_global_stats 还应该从训练 (False) 更改为测试/部署 (True) - 这是默认行为。请注意,您给出的第一个示例是用于部署的prototxt,因此将其设置为True是正确的。

我不确定共享参数。

我提出了一个拉取请求来改进批量规范化的文档,但后来因为我想修改它而关闭了它。然后,我就再也没有回过头来。

请注意,我认为 "BatchNorm"lr_mult: 0 不再需要(也许不允许?),尽管我现在没有找到相应的 PR。

关于machine-learning - "BatchNorm"层在caffe中应该如何使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41608242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com