一、环境
TensorFlow API r1.12
CUDA 9.2 V9.2.148
cudnn64_7.dll
Python 3.6.3
Windows 10
二、官方说明
计算输入张量 x 的平均值和方差
https://tensorflow.google.cn/api_docs/python/tf/nn/moments
按照 axis 指定的轴计算输入张量 x 中的平均值和方差
如果在批量标准化 batch normalization 操作中计算这些矩,请参考 tf.nn.batch_normalization
对于全局标准化 “global normalization”,需要设置卷积核的形状为 [batch, height, width, depth],同时 axis = [0, 1, 2]
对于简单的标准化,设置 axis = [0] 即可(单个批次)
tf.nn.moments(
x,
axes,
shift=None,
name=None,
keep_dims=False
)
参数:
x:输入张量
axes:整型数组,控制沿什么轴来计算平均值和方差
shift:在当前版本实现中已经不使用了
name:用于控制计算矩的操作的作用域范围
keep_dims:生生和输入具有相同维度的矩
返回:
两个张量对象:平均值和方差
三、实例
输入张量 x 的维度为 1 且 axes = [0],即计算向量的平均值和方差
>>> import tensorflow as tf
>>> data = tf.constant(value=[0,1,2,3,4,5,6,7,8,9], dtype=tf.float32)
>>> mean,variance = tf.nn.moments(x=data, axes=[0])
>>> mean
<tf.Tensor 'moments_1/Squeeze:0' shape=() dtype=float32>
>>> variance
<tf.Tensor 'moments_1/Squeeze_1:0' shape=() dtype=float32>
>>> sess = tf.InteractiveSession()
>>> print(sess.run(fetches=[mean,variance]))
[4.5, 8.25]
>>> sess.close()