Детали расчета пакетной нормализации

Я реализую алгоритм BN в своей модели CNN, используя C++. Но я очень смущен из-за его расчета среднего и стандартного отклонения. Давайте посмотрим на фотографии ниже.

Рис вычислений BN

Уравнение алгоритма BN

Насколько я знаю, нужно вычислять среднее значение каждого пикселя. но я не знаю, какое из уравнений правильное.

Предположим, что вход BN равен [B, H, W], где B — размер пакета, (H, W) — размер карты объектов (предположим, [3,2,2]).

  1. Среднее значение всех пикселей в одном изображении

    ([0,0,0]+[0,0,1]+[0,1,0]+[0,1,1])/4

Мини-пакетные средние скалярны

  1. Среднее значение пикселя одного и того же местоположения на нескольких изображениях (номер изображения = номер партии)

    ([0,0,0]+[1,0,0]+[2,0,0])/3 , ([0,0,1]+[1,0,1]+[2,0,1])/3 , ([0,1,0]+[1,1,0]+[2,1,0])/3 , ([0,1,1]+[1,1,1]+[2,1,1])/3 )

Мини-пакетные средства представляют собой массив

Какой расчет правильный?


person Waterpiggy    schedule 04.02.2020    source источник


Ответы (1)


Ни то, ни другое не правильно. Метод 1 просто нормализует каждое изображение; это не имеет ничего общего с пакетом в целом. Метод 2 почти наверняка повредит вашему обучению, так как он отделяет соседние пиксели друг от друга.

Вам необходимо вычислить среднее значение и дисперсию всех пикселей в пакете. Затем нормализуйте каждый пиксель с помощью уравнения scale and shift, используя эту пакетную статистику.

person Prune    schedule 06.02.2020