tensor_array_to_tensor

paddle.fluid.layers. tensor_array_to_tensor ( input, axis=1, name=None, use_stack=False ) [源代码]

该OP将 input 这个LoDTensorArray中的所有Tensor沿 axis 指定的轴进行拼接(concat)或堆叠(stack)。

示例:

  1. - 案例 1
  2. 给定:
  3. input.data = {[[0.6, 0.1, 0.3],
  4. [0.5, 0.3, 0.2]],
  5. [[1.3],
  6. [1.8]],
  7. [[2.3, 2.1],
  8. [2.5, 2.4]]}
  9. axis = 1, use_stack = False
  10. 结果:
  11. output.data = [[0.6, 0.1, 0.3, 1.3, 2.3, 2.1],
  12. [0.5, 0.3, 0.2, 1.8, 2.5, 2.4]]
  13. output_index.data = [3, 1, 2]
  14. - 案例 2
  15. 给定:
  16. input.data = {[[0.6, 0.1],
  17. [0.5, 0.3]],
  18. [[0.3, 1.3],
  19. [0.2, 1.8]],
  20. [[2.3, 2.1],
  21. [2.5, 2.4]]}
  22. axis = 1, use_stack = False
  23. 结果:
  24. output.data = [[[0.6, 0.1]
  25. [0.3, 1.3]
  26. [2.3, 2.1],
  27. [[0.5, 0.3]
  28. [0.2, 1.8]
  29. [2.5, 2.4]]]
  30. output_index.data = [2, 2, 2]

参数:

  • input (Variable) - 输入的LoDTensorArray。支持的数据类型为:float32、float64、int32、int64。

  • axis (int,可选) - 指定对输入Tensor进行运算的轴, axis 的有效范围是[-R, R),R是输入 input 中Tensor的Rank,axis 为负时与 axis +R 等价。默认值为1。

  • name (str,可选) – 具体用法请参见 Name ,一般无需设置,默认值为None。

  • use_stack (bool,可选) – 指明使用stack或concat进行运算,若为stack模式,要求LoDTensorArray中的所有Tensor具有相同的形状。默认值为False。

返回:Variable的二元组, 包含了两个Tensor。第一个Tensor表示对数组内的元素进行stack或concat的输出结果,数据类型与数组中的Tensor相同;第二个Tensor包含了数组中各Tensor在 axis 维度的大小,数据类型为int32。

返回类型: tuple

代码示例:

  1. import paddle.fluid as fluid
  2. import numpy as np
  3. x0 = fluid.layers.assign(np.random.rand(2, 2).astype("float32"))
  4. x1 = fluid.layers.assign(np.random.rand(2, 2).astype("float32"))
  5. i = fluid.layers.fill_constant(shape=[1], dtype="int64", value=0)
  6. array = fluid.layers.create_array(dtype='float32')
  7. fluid.layers.array_write(x0, i, array)
  8. fluid.layers.array_write(x1, i + 1, array)
  9. output, output_index = fluid.layers.tensor_array_to_tensor(input=array)