tf.math.reduce_mean( tf.reduce_mean )

介绍

按照某个轴(维度),计算张量的平均值(缩小维度求平均值)

别名

  • tf.reduce_mean() 最常用

语法

tf.math.reduce_mean(
    input_tensor,
    axis=None,
    keepdims=False,
    name=None
)
参数
  • input_tensor: tensor,数字类型
  • axis: 指定的轴,如果不指定,则计算所有元素的均值;指定多个轴时,是list或tuple类型
  • keep_dims:True,输出的结果保持输入tensor的形状,False,输出结果会降低维度;默认为False
  • name: 操作的名称;
返回值
  • educe tensor

例子

求整体平均值

import tensorflow as tf
import numpy as np

a=tf.constant(np.arange(6).reshape(2,3),"float32")
print(a.numpy())

a2=tf.math.reduce_mean(a)
print("平均值:",a2.numpy())

执行结果:

[[0. 1. 2.]
 [3. 4. 5.]]

平均值: 2.5

求整体平均值,结果保持维度不变

a2=tf.math.reduce_mean(a,keepdims=True)
print("平均值:",a2.numpy())

执行结果:

平均值: [[2.5]]

沿着0轴求平均值

a2=tf.math.reduce_mean(a,axis=0)
print("0轴平均值:",a2.numpy())

执行结果:

0轴平均值: [1.5 2.5 3.5]

沿着1轴求平均值

a4=tf.math.reduce_mean(a,axis=1)
print("1轴平均值:",a4.numpy())

执行结果:

1轴平均值: [1. 4.]

沿着1轴、2轴求平均值(难点)

至少3维矩阵,沿着1轴、2轴求平均值

import tensorflow as tf
import numpy as np

a=tf.constant(np.arange(24).reshape(2,3,4),"float32")
print(a.numpy())
print("-"*50)
res=tf.reduce_mean(a,[1,2],keepdims=True)
print(res.numpy())

执行结果:

[[[ 0.  1.  2.  3.]
  [ 4.  5.  6.  7.]
  [ 8.  9. 10. 11.]]

 [[12. 13. 14. 15.]
  [16. 17. 18. 19.]
  [20. 21. 22. 23.]]]
--------------------------------------------------
[[[ 5.5]]

 [[17.5]]]

运算过程如下图:

3维矩阵,可以理解为2个二维矩阵,每个二维矩阵沿着1轴、2轴做加法,然后除以该矩阵的元素数量,如下:

(0+1+2+3+4+5+6+7+8+9+10+11)/12=5.5
(12+13+14+15+16+17+18+19+20+21+22+23)/12=17.5

感谢:
https://blog.csdn.net/dcrmg/article/details/79797826


原文出处:/show_1EF4jKTQeHH2.html