Python 为什么移动平均值和移动方差不在tf.trainable变量()中?
我正在使用Python 为什么移动平均值和移动方差不在tf.trainable变量()中?,python,tensorflow,Python,Tensorflow,我正在使用tf.layers.batch\u规范化(a\u pl,training=True)。 通过tf.trainable_variables(),我可以看到所有可训练变量。但是我在它们里面找不到移动的意思和移动的方差 代码如下: 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.lay
tf.layers.batch\u规范化(a\u pl,training=True)
。
通过tf.trainable_variables()
,我可以看到所有可训练变量。但是我在它们里面找不到移动的意思
和移动的方差
代码如下:
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_意味着和moving_方差
不包括在tf.trainable_variables()中
谢谢 可训练变量使用梯度下降法进行训练。批标准化移动平均值和方差不使用梯度下降法进行训练,而是直接从通过网络的激活计算得出,因此不应将其作为可训练变量
因此,在某种程度上,你可以说它们是自动训练的,但不是用梯度下降法,所以从这个意义上说,它们不是可训练变量。可训练变量是用梯度下降法训练的。批标准化移动平均值和方差不使用梯度下降法进行训练,而是直接从通过网络的激活计算得出,因此不应将其作为可训练变量
所以在某种程度上,你可以说它们是自动训练的,但不是梯度下降,所以从这个意义上说,它们不是可训练的变量