Я немного запутался в том, как использовать/вставлять слой "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"
в кофе?