据我了解,tf.layers.batch_normalization
我定义的轴是标准化的轴。
简单的说:
鉴于这些值
a = [[0, 2], [1, 4]]
形状为 (2, 2),因此轴为 0 和 1。
对轴 1 进行归一化意味着将轴 0 减少到其平均值和标准偏差,然后将这些值用于归一化。
所以
bn = tf.layers.batch_normalization(a, axis=[1])
会有(几乎)相同的结果
m, v = tf.nn.moments(a, axes=[0]) bn = (a - m) / tf.sqrt(v)
但是我将如何tf.layers.batch_normalization
处理所有轴?
使用之前的平均值和标准差计算将很容易:
m, v = tf.nn.moments(a, axes=[0, 1]) bn = (a - m) / tf.sqrt(v)
但是如何通过批量标准化来做到这一点?
bn = tf.layers.batch_normalization(a, axis=[???])
我尝试了以下不起作用的方法:
axis = None
: AttributeError: 'BatchNormalization' object has no attribute 'axis'
axis = []
: IndexError: list index out of range
axis = [0, 1]
: 所有结果为零
白板的微信
MMMHUHU
相关分类