我正在使用tf.layers.batch_normalization(a_pl, training=True)
。
通过tf.trainable_variables()
,我可以看到所有可训练的变量。但是我在其中找不到moving_mean
和moving_variances
。
代码如下:
import tensorflow as tf
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
a_pl = tf.placeholder(tf.float32, [2, 3])
b = tf.layers.batch_normalization(a_pl, training=True)
vl = [var.name for var in tf.trainable_variables()]
for v in vl:
print v
这里的输出:
batch_normalization/gamma:0
batch_normalization/beta:0
我想知道moving_mean
中为什么不包括moving_variances
和tf.trainable_variables()
吗?
谢谢!
答案 0 :(得分:0)
可训练变量使用梯度下降来训练。批次归一化移动平均值和方差不是使用梯度下降来训练的,而是直接根据通过网络进行的激活计算得出的,因此不应将它们作为可训练变量包括在内。
因此,从某种意义上讲,您可以说它们是自动训练的,但不是梯度下降的,因此它们在这种意义上不是可训练的变量。