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)