Я немного запутался в том, как использовать/вставлять слой "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: только "BatchNorm"
В примере cifar10, представленном caffe, "BatchNorm" используется без "BatchNorm" "Scale" следующего за ним:
layer {
name: "bn1"
type: "BatchNorm"
bottom: "pool1"
top: "bn1"
param {
lr_mult: 0
}
param {
lr_mult: 0
}
param {
lr_mult: 0
}
}
cifar10 Различные batch_norm_param для TRAIN и TEST
batch_norm_param: use_global_scale изменяется между batch_norm_param: use_global_scale TRAIN и TEST:
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
}
}
Так что это должно быть?
Как использовать слой "BatchNorm" в кофе?