Как следует использовать слой "BatchNorm" в caffe?
я немного смущен тем, как я должен использовать/insert "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"
is используется без каких-либо "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
между 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"
слой в кафе?
1 ответов
Если вы следуете оригинальной бумаге, нормализация пакета должна сопровождаться масштабом и слоями смещения (смещение может быть включено через масштаб, хотя это делает параметры смещения недоступными). use_global_stats
также следует изменить с обучения (False) на тестирование/развертывание (True) - это поведение по умолчанию. Обратите внимание, что первым примером является prototxt для развертывания, поэтому для него правильно установить значение True.
Я не уверен в общем параметры.
Я сделал запрос на вытягивание, чтобы улучшить документы по нормализации пакета, но затем закрыл его, потому что я хотел его изменить. И потом, я так и не вернулся к этому.
обратите внимание, что я думаю lr_mult: 0
на "BatchNorm"
больше не требуется (возможно, не пускают?), хотя я сейчас не нахожу соответствующего пиара.