sum

该OP用于对输入的一至多个Tensor或LoDTensor求和。如果输入的是LoDTensor,输出仅与第一个输入共享LoD信息(序列信息)。

例1:

  1. 输入:
  2. input.shape = [2, 3]
  3. input = [[1, 2, 3],
  4. [4, 5, 6]]
  5.  
  6. 输出:
  7. output.shape = [2, 3]
  8. output = [[1, 2, 3],
  9. [4, 5, 6]]

例2:

  1. 输入:
  2. 第一个输入:
  3. input1.shape = [2, 3]
  4. input1 = [[1, 2, 3],
  5. [4, 5, 6]]
  6.  
  7. 第二个输入:
  8. input2.shape = [2, 3]
  9. input2 = [[7, 8, 9],
  10. [10, 11, 12]]
  11.  
  12. 输出:
  13. output.shape = [2, 3]
  14. output = [[8, 10, 12],
  15. [14, 16, 18]]
  • 参数:
  • x (Variable|list(Variable)) - 输入的一至多个Variable。如果输入了多个Variable,则不同Variable间的shape和数据类型应保持一致。Variable为多维Tensor或LoDTensor,数据类型支持:float32,float64,int32,int64

返回:对输入 x 中的Variable求和后的结果,shape和数据类型与 x 一致

返回类型:Variable

代码示例:

  1. import paddle.fluid as fluid
  2. input0 = fluid.layers.fill_constant(shape=[2, 3], dtype='int64', value=5)
  3. input1 = fluid.layers.fill_constant(shape=[2, 3], dtype='int64', value=3)
  4. sum = fluid.layers.sum([input0, input1])
  5.  
  6. #用户可以通过executor打印出求和的结果
  7. out = fluid.layers.Print(sum, message="the sum of input0 and input1: ")
  8. exe = fluid.Executor(fluid.CPUPlace())
  9. exe.run(fluid.default_main_program())
  10.  
  11. #打印出的数据为:
  12. 1570701754 the sum of input0 and input1: The place is:CPUPlace
  13. Tensor[sum_0.tmp_0]
  14. shape: [2,3,]
  15. dtype: l
  16. data: 8,8,8,8,8,8,
  17.  
  18. #输出了shape为[2,3]的Tensor,与输入的shape一致
  19. #dtype为对应C++数据类型,在不同环境下可能显示值不同,但本质相同
  20. #例如:如果Tensor中数据类型是int64,则对应的C++数据类型为int64_t,所以dtype值为typeid(int64_t).name(),
  21. # 其在MacOS下为'x',linux下为'l',Windows下为'__int64',都表示64位整型变量