TensorFlow的tf.reduce_sum
函数是用于计算张量元素的和(sum)的函数,它的作用是对张量的某些维度上的元素进行累加操作,并返回一个更小的张量。在此过程中,减少维度大小是tf.reduce_sum
函数的主要目的。
下面是tf.reduce_sum
函数的使用方法:
tf.reduce_sum(
input_tensor,
axis=None,
keepdims=None,
name=None,
reduction_indices=None,
keep_dims=None
)
input_tensor
: 需要进行求和操作的张量。axis
: 需要进行求和的维度。如果不指定此参数,则会对所有元素进行求和。keepdims
: 是否在结果张量中保留被操作维度的大小。如果指定为True,则在结果张量中保留操作维度,否则不保留,默认为None
,不保留。name
: 操作的名称。reduction_indices
:axis
的旧名称,已经被舍弃。keep_dims
:keepdims
的旧名称,已经被舍弃。
下面我们提供两个关于tf.reduce_sum
函数的实例进行说明:
示例1
import tensorflow as tf
# 定义一个二维矩阵
x = tf.constant([[1,2,3], [4,5,6]])
# 对所有元素求和
sum_all = tf.reduce_sum(x)
# 对1号维度(即行)进行求和
sum_row = tf.reduce_sum(x, axis=0)
# 对0号维度(即列)进行求和
sum_col = tf.reduce_sum(x, axis=1)
with tf.Session() as sess:
print("Input matrix:\n", sess.run(x))
print("Sum of all elements: ", sess.run(sum_all))
print("Sum along row: ", sess.run(sum_row))
print("Sum along column: ", sess.run(sum_col))
输出结果:
Input matrix:
[[1 2 3]
[4 5 6]]
Sum of all elements: 21
Sum along row: [5 7 9]
Sum along column: [ 6 15]
代码中我们定义了一个2×3的矩阵,对其所有元素、行、列进行了求和操作。sum_all
变量对所有元素进行求和,因此返回21;sum_row
变量对行进行求和,因此返回[5 7 9];sum_col
变量对列进行求和,因此返回[6 15]。
示例2
import tensorflow as tf
# 定义一个3维张量(2x2x3)
x = tf.constant([[[1,2,3], [4,5,6]], [[7,8,9], [10,11,12]]])
# 对2号维度(即深度)进行求和
sum_depth = tf.reduce_sum(x, axis=2)
# 对1号维度(即列)进行求和,且保留列的大小
sum_col_keep = tf.reduce_sum(x, axis=1, keepdims=True)
with tf.Session() as sess:
print("Input tensor:\n", sess.run(x))
print("Sum along depth: ", sess.run(sum_depth))
print("Sum along column with keepdims: \n", sess.run(sum_col_keep))
输出结果:
Input tensor:
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
Sum along depth: [[[ 6 15]
[ 9 21]]
[[24 27]
[33 36]]]
Sum along column with keepdims:
[[[ 5 7 9]]
[[17 19 21]]]
代码中我们定义了一个3维张量(2x2x3),对其2号维度(即深度)进行求和,以及对1号维度(即列)进行求和,且保留列的大小。sum_depth
变量对深度进行求和,因此返回[[[6 15][9 21]] [24 27 33 36]];sum_col_keep
变量对列进行求和,且保留列的大小,因此返回[[[5 7 9]] [[17 19 21]]]。