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. 给定:
  4.  
  5. input.data = {[[0.6, 0.1, 0.3],
  6. [0.5, 0.3, 0.2]],
  7. [[1.3],
  8. [1.8]],
  9. [[2.3, 2.1],
  10. [2.5, 2.4]]}
  11.  
  12. axis = 1, use_stack = False
  13.  
  14. 结果:
  15.  
  16. output.data = [[0.6, 0.1, 0.3, 1.3, 2.3, 2.1],
  17. [0.5, 0.3, 0.2, 1.8, 2.5, 2.4]]
  18.  
  19. output_index.data = [3, 1, 2]
  20.  
  21. - 案例 2
  22.  
  23. 给定:
  24.  
  25. input.data = {[[0.6, 0.1],
  26. [0.5, 0.3]],
  27. [[0.3, 1.3],
  28. [0.2, 1.8]],
  29. [[2.3, 2.1],
  30. [2.5, 2.4]]}
  31.  
  32. axis = 1, use_stack = False
  33.  
  34. 结果:
  35.  
  36. output.data = [[[0.6, 0.1]
  37. [0.3, 1.3]
  38. [2.3, 2.1],
  39. [[0.5, 0.3]
  40. [0.2, 1.8]
  41. [2.5, 2.4]]]
  42.  
  43. 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)