tensorflow--tf.reduce函数

因为对tfreduce.api这类黑匣子一直不太清楚,所以做个小调研:

参考的链接:https://blog.csdn.net/yjk13703623757/article/details/77284692

在tensor的某一维度上,有一类求值的函数,如tf.reduce_max( ),tf.reduce_mean( ),tf.reduce_sum( )

1.tf.reduce_mean( )

  • 函数作用: 

沿着tensor的某一维度,计算元素的平均值。由于输出tensor的维度比原tensor的低,这类操作也叫降维。

  • 参数: 

reduce_mean(input_tensor,axis=None,keep_dims=False,name=None, reduction_indices=None) 
input_tensor:需要降维的tensor。 
axis:axis=none, 求全部元素的平均值;axis=0, 按列降维,求每列平均值;axis=1,按行降维,求每行平均值。 
keep_dims:若值为True,可多行输出平均值。 
name:自定义操作的名称。 
reduction_indices:axis的旧名,已停用。

  • 返回: 

降维后的tensor

import tensorflow as tf

x = tf.constant([[1., 2., 3.], [4., 5., 6.]])

with tf.Session() as sess:
    x = sess.run(x)

    mean1 = sess.run(tf.reduce_mean(x))     
    mean2 = sess.run(tf.reduce_mean(x, 0))  
    mean3 = sess.run(tf.reduce_mean(x, 1))    

    print(x)
    print()
    print(mean1)
    print()
    print(mean2)
    print()
    print(mean3)

'''
输出
[[ 1.  2.  3.]
 [ 4.  5.  6.]]

3.5

[ 2.5  3.5  4.5]

[ 2.  5.]
'''

2.tf.reduce_sum()

函数作用: 
沿着tensor的某一维度,计算元素的和。由于输出tensor的维度比原tensor的低,这类操作也叫降维。

参数: 
reduce_sum(input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None) 
input_tensor:需要降维的tensor。 
axis:axis=none, 求全部元素的和;axis=0, 按列降维,求每列元素的和;axis=1,按行降维,求每行元素的和。 
keep_dims:若值为True,则用长度为1的tensor形式,输出平均值。 
name:自定义操作的名称。 
reduction_indices:axis的旧名,已停用。

返回: 
降维后的tensor

import tensorflow as tf

x = tf.constant([[1, 1, 1], [1, 1, 1]])                    

# axis = none
reduce_sum = tf.reduce_sum(x)                               

# axis = 0
reduce_sum_axis0 = tf.reduce_sum(x, axis = 0)                
resuce_sum_axis0_axis0 = tf.reduce_sum(reduce_sum_axis0)

# axis = 1
reduce_sum_axis1 = tf.reduce_sum(x, 1)
reduce_sum_axis1_axis0 = tf.reduce_sum(reduce_sum_axis1, 0)

# axis = [0, 1] or axis = [1, 0] 
reduce_sum_axis_01 = tf.reduce_sum(x, [0, 1])
reduce_sum_axis_10 = tf.reduce_sum(x, [1, 0])


# 构建session
with tf.Session() as sess:

    # 运行op定义的运算
    x = sess.run(x)

    result = sess.run(reduce_sum)

    result_0 = sess.run(reduce_sum_axis0)
    result_0_0 = sess.run(resuce_sum_axis0_axis0) 

    result_1 = sess.run(reduce_sum_axis1)
    result_1_0 = sess.run(reduce_sum_axis1_axis0)

    result_01 = sess.run(reduce_sum_axis_01)
    result_10 = sess.run(reduce_sum_axis_10)

    # 输出运算结果
    print(x)
    print()
    print('shape of input_tensor x')
    print(type(x))
    print()

    print('不传入参数axis,默认x reduce到0维')
    print('result =', result)
    print()

    print('传入参数axis = 0')
    print('result_0 =', result_0)
    print()
    print('把 %s 沿0轴,再次reduce' % str(result_0))    
    print('result_0_0 =', result_0_0)
    print()

    print('传入参数axis = 1')
    print('result_1 =', result_1)
    print()
    print('把 %s 沿0轴,再次reduce' % str(result_1))
    print('result_1_0 =', result_1_0)
    print()

    print('输入参数axis = [0, 1]')
    print('result_01 =', result_01)
    print()
    print('输入参数axis = [1, 0]')
    print('result_10 =', result_10)

'''输出
[[ 1.  1.  1.]
 [ 1.  1.  1.]]

shape of input_tensor x
<class 'numpy.ndarray'>

不传入参数axis,默认x reduce到0维
result = 6.0

传入参数axis = 0
result_0 = [ 2.  2.  2.]

把 [ 2.  2.  2.] 沿0轴,再次reduce
result_0_0 = 6.0

传入参数axis = 1
result_1 = [ 3.  3.]

把 [ 3.  3.] 沿0轴,再次reduce
result_1_0 = 6.0

输入参数axis = [0, 1]
result_01 = 6.0

输入参数axis = [1, 0]
result_10 = 6.0
'''

3.tf.reduce_max()  /  tf.reduce_min()

  • 函数作用:

沿着tensor的某一维度,计算元素的最大值。

  • 参数: 
    同以上函数

  • 返回: 
    降维后的tensor

4.tf.reduce_prod( )

  • 函数作用:

沿着tensor的某一维度,计算输入tensor元素的乘积。

5.tf.reduce_all( )

函数作用: 
对tensor中各个元素求逻辑‘与’。

6.tf.reduce_any( )

  • 函数作用: 
    对tensor中各个元素求逻辑‘或’。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值