规约函数如下:
函数 | 描述 |
reduce_sum ( input_tensor , axis = None , keep_dims = False , name = None , reduction_indices = None) | 计算输入张量元素的和,或者按照axis指定的轴进行求和 |
reduce_prod(input_tensor,axis=None,keep_dims=False,name=None,reduction_indices=None) | 计算输入张量元素的乘积,或者按照axis指定的轴进行乘积 |
reduce_mix(input_tensor,axis=None,keep_dims=False,name=None,reduction_indices=None) | 计算输入张量元素的最小值 |
reduce_max(input_tensor,axis=None,keep_dims=False,name=None,reduction_indices=None) | 计算输入张量元素的最大值 |
reduce_mean(input_tensor,axis=None,keep_dims=False,name=None,reduction_indices=None) | 计算输入张量各元素的平均值 |
reduce_all(input_tensor,axis=None,keep_dims=False,name=None,reduction_indices=None) | 对张量的各个元素求逻辑“与” |
reduce_any(input_tensor,axis=None,keep_dims=False,name=None,reduction_indices=None) | 对张量的各个元素求逻辑“或” |
我们先来说下张量的维度是怎么算的?
对于一个二维张量来说例如:[[1,2,3],[4,5,6],[7,8,9]]。因为他的最外层有两个括号,所以在tensorflow中我们就称它是二维张量(但是在矩阵中它是3*3的三维矩阵,所以不要用矩阵的思想来理解这个维度)
下面我们就这一个求平均值的函数reduce_mean()来讲解是怎么计算的:
我们就假设张量为a = [[1,2,3],[4,5,6],[7,8,9]],它的0维度包含三个1*3的向量分别是[1,2,3]、[4,5,6]、[7,8,9]。那么reduce_mean(a,0)就是张量a在0维度上的平均值为(1+4+7)/ 3=4,、(2+5+8)/3= 5、(3+6+9)/3=6,所以reduce_mean(a,0)输出的结果为[4,5,6]。同理reduce_mean(a,1)在1维度上的平均值为(1+2+3)/ 3=2,、(4+5+6)/3= 5、(7+8+9)/3=8,所以输出结果为[2,5,8]
注意:如果在张量全部元素是整型,所以输出的也是整型(小数是去舍去小数点后面的)
下面我们用程序演示下:
1 import tensorflow as tf 2 ab = tf.Variable([[1,2,3],[4,5,6],[7,8,9]]) 3 print(ab.shape) 4 with tf.Session() as sess: 5 sess.run(tf.global_variables_initializer()) 6 print("ab的0维度平均值:",sess.run(tf.reduce_mean(ab,0))) 7 print("ab的1维度平均值:",sess.run(tf.reduce_mean(ab,1)))
输出结果:
ab的0维度平均值: [4 5 6]
ab的1维度平均值: [2 5 8]
原文:https://www.cnblogs.com/The-Shining/p/11688301.html