我正在尝试在Tensorflow中构建一个通用的批量标准化函数。
我在这篇文章中学习了批量标准化,我觉得这很友好。
我对比例和beta变量的维度有疑问:在我的情况下,批量标准化应用于每个卷积层的每个激活,因此,如果我将卷积层的输出作为大小为:
[57,57,96]
我需要比例和beta与卷积层输出具有相同的维度,对吗?
这是我的功能,程序可以工作,但我不知道是否正确
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