Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么移动平均值和移动方差不在tf.trainable变量()中?_Python_Tensorflow - Fatal编程技术网

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()中


谢谢

可训练变量使用梯度下降法进行训练。批标准化移动平均值和方差不使用梯度下降法进行训练,而是直接从通过网络的激活计算得出,因此不应将其作为可训练变量


因此,在某种程度上,你可以说它们是自动训练的,但不是用梯度下降法,所以从这个意义上说,它们不是可训练变量。

可训练变量是用梯度下降法训练的。批标准化移动平均值和方差不使用梯度下降法进行训练,而是直接从通过网络的激活计算得出,因此不应将其作为可训练变量

所以在某种程度上,你可以说它们是自动训练的,但不是梯度下降,所以从这个意义上说,它们不是可训练的变量