分类目录:《深入浅出TensorFlow2函数》总目录
相关文章:
· 深入浅出TensorFlow2函数——tf.reduce_sum
· 深入浅出TensorFlow2函数——tf.math.reduce_sum
· 深入浅出Pytorch函数——torch.sum
· 深入浅出PaddlePaddle函数——paddle.sum


计算张量各维度上元素的总和。

语法

tf.math.reduce_sum(input_tensor, axis=None, keepdims=False, name=None)

参数

  • input_tensor:[Tensor] 待求和的多维Tensor
  • axis:求和运算的维度。如果为None,则计算所有元素的和并返回包含单个元素的Tensor变量,否则必须在[−rank(x),rank(x)][-\text{rank}(x), \text{rank}(x)] [rank(x),rank(x)]范围内。如果axis[i]<0\text{axis}[i]<0 axis[i]<0,则维度将变为rank+axis[i]\text{rank} + \text{axis}[i] rank+axis[i],默认值为None
  • keepdim:[bool] 是否在输出Tensor中保留减小的维度。如keepdim=True,否则结果张量的维度将比输入张量小,默认值为False
  • name:[可选, str] 操作的名称,默认值为None

返回值

input_tensor具有相同dtype 的求和后的tensor

实例

>>> # x has a shape of (2, 3) (two rows and three columns):>>> x = tf.constant([[1, 1, 1], [1, 1, 1]])>>> x.numpy()array([[1, 1, 1], [1, 1, 1]], dtype=int32)>>> # sum all the elements>>> # 1 + 1 + 1 + 1 + 1+ 1 = 6>>> tf.reduce_sum(x).numpy()6>>> # reduce along the first dimension>>> # the result is [1, 1, 1] + [1, 1, 1] = [2, 2, 2]>>> tf.reduce_sum(x, 0).numpy()array([2, 2, 2], dtype=int32)>>> # reduce along the second dimension>>> # the result is [1, 1] + [1, 1] + [1, 1] = [3, 3]>>> tf.reduce_sum(x, 1).numpy()array([3, 3], dtype=int32)>>> # keep the original dimensions>>> tf.reduce_sum(x, 1, keepdims=True).numpy()array([[3], [3]], dtype=int32)>>> # reduce along both dimensions>>> # the result is 1 + 1 + 1 + 1 + 1 + 1 = 6>>> # or, equivalently, reduce along rows, then reduce the resultant array>>> # [1, 1, 1] + [1, 1, 1] = [2, 2, 2]>>> # 2 + 2 + 2 = 6>>> tf.reduce_sum(x, [0, 1]).numpy()6

函数实现

@tf_export("math.reduce_sum", "reduce_sum", v1=[])@dispatch.add_dispatch_supportdef reduce_sum(input_tensor, axis=None, keepdims=False, name=None):"""Computes the sum of elements across dimensions of a tensor.This is the reduction operation for the elementwise `tf.math.add` op.Reduces `input_tensor` along the dimensions given in `axis`.Unless `keepdims` is true, the rank of the tensor is reduced by 1 for eachof the entries in `axis`, which must be unique. If `keepdims` is true, thereduced dimensions are retained with length 1.If `axis` is None, all dimensions are reduced, and atensor with a single element is returned.For example:>>> # x has a shape of (2, 3) (two rows and three columns):>>> x = tf.constant([[1, 1, 1], [1, 1, 1]])>>> x.numpy()array([[1, 1, 1], [1, 1, 1]], dtype=int32)>>> # sum all the elements>>> # 1 + 1 + 1 + 1 + 1+ 1 = 6>>> tf.reduce_sum(x).numpy()6>>> # reduce along the first dimension>>> # the result is [1, 1, 1] + [1, 1, 1] = [2, 2, 2]>>> tf.reduce_sum(x, 0).numpy()array([2, 2, 2], dtype=int32)>>> # reduce along the second dimension>>> # the result is [1, 1] + [1, 1] + [1, 1] = [3, 3]>>> tf.reduce_sum(x, 1).numpy()array([3, 3], dtype=int32)>>> # keep the original dimensions>>> tf.reduce_sum(x, 1, keepdims=True).numpy()array([[3], [3]], dtype=int32)>>> # reduce along both dimensions>>> # the result is 1 + 1 + 1 + 1 + 1 + 1 = 6>>> # or, equivalently, reduce along rows, then reduce the resultant array>>> # [1, 1, 1] + [1, 1, 1] = [2, 2, 2]>>> # 2 + 2 + 2 = 6>>> tf.reduce_sum(x, [0, 1]).numpy()6Args:input_tensor: The tensor to reduce. Should have numeric type.axis: The dimensions to reduce. If `None` (the default), reduces alldimensions. Must be in the range `[-rank(input_tensor),rank(input_tensor)]`.keepdims: If true, retains reduced dimensions with length 1.name: A name for the operation (optional).Returns:The reduced tensor, of the same dtype as the input_tensor.@compatibility(numpy)Equivalent to np.sum apart the fact that numpy upcast uint8 and int32 toint64 while tensorflow returns the same dtype as the input.@end_compatibility"""return reduce_sum_with_dims(input_tensor, axis, keepdims, name,_ReductionDims(input_tensor, axis))