Я пытаюсь создать обобщенную функцию пакетной нормализации в Tensorflow.
Я узнаю о пакетной нормализации в этой очень доброй статье.
У меня проблема с размерами переменных scale и beta: в моем случае пакетная нормализация применяется к каждой активации каждого сверточного слоя, поэтому, если у меня as вывод сверточного слоя терсора размером:
[57,57,96]
мне нужно, чтобы масштаб и бета имели тот же размер, что и вывод сверточного слоя, верно?
вот моя функция, программа работает, но я не знаю, верна ли она
def batch_normalization_layer(batch):
# Calculate batch mean and variance
batch_mean, batch_var = tf.nn.moments(batch, axes=[0, 1, 2])
# Apply the initial batch normalizing transform
scale = tf.Variable(tf.ones([batch.get_shape()[1],batch.get_shape()[2],batch.get_shape()[3]]))
beta = tf.Variable(tf.zeros([batch.get_shape()[1],batch.get_shape()[2],batch.get_shape()[3]]))
normalized_batch = tf.nn.batch_normalization(batch, batch_mean, batch_var, beta, scale, 0.0001)
return normalized_batch