介绍
按照某个轴(维度),计算张量的平均值(缩小维度求平均值)
别名
- 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

