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:

    给定:

        input.data = {[[0.6, 0.1, 0.3],
                       [0.5, 0.3, 0.2]],
                      [[1.3],
                       [1.8]],
                      [[2.3, 2.1],
                       [2.5, 2.4]]}

        axis = 1, use_stack = False

    结果:

        output.data = [[0.6, 0.1, 0.3, 1.3, 2.3, 2.1],
                       [0.5, 0.3, 0.2, 1.8, 2.5, 2.4]]

        output_index.data = [3, 1, 2]

- 案例 2:

    给定:

        input.data = {[[0.6, 0.1],
                       [0.5, 0.3]],
                      [[0.3, 1.3],
                       [0.2, 1.8]],
                      [[2.3, 2.1],
                       [2.5, 2.4]]}

        axis = 1, use_stack = False

    结果:

        output.data = [[[0.6, 0.1]
                        [0.3, 1.3]
                        [2.3, 2.1],
                       [[0.5, 0.3]
                        [0.2, 1.8]
                        [2.5, 2.4]]]

        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

代码示例:

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