diff --git a/doc/fluid/api_cn/layers_cn/array_write_cn.rst b/doc/fluid/api_cn/layers_cn/array_write_cn.rst index 7c8ab3278d9972c109473cbd7bea1b1aee286c34..532c950938e3d4fb17bf2bf20cfe7f0551a697ac 100644 --- a/doc/fluid/api_cn/layers_cn/array_write_cn.rst +++ b/doc/fluid/api_cn/layers_cn/array_write_cn.rst @@ -5,35 +5,44 @@ array_write .. py:function:: paddle.fluid.layers.array_write(x, i, array=None) - -该函数将给定的输入变量(即 ``x`` )写入一个作为输出的 ``LOD_TENSOR_ARRAY`` 变量的某一指定位置中, -这一位置由数组下标(即 ``i`` )指明。 如果 ``LOD_TENSOR_ARRAY`` (即 ``array`` )未指定(即为None值), 一个新的 ``LOD_TENSOR_ARRAY`` 将会被创建并作为结果返回。 +该OP将输入的变量 ``x`` 写入到数组 :ref:`cn_api_fluid_LoDTensorArray` ``array`` 的第i个位置,并返回修改后的LoDTensorArray,如果 ``array`` 为None,则创建一个新的LoDTensorArray。常与 :ref:`cn_api_fluid_layers_array_read` OP联合使用对LoDTensorArray进行读写。 参数: - - **x** (Variable|list) – 待从中读取数据的输入张量(tensor) - - **i** (Variable|list) – 输出结果 ``LOD_TENSOR_ARRAY`` 的下标, 该下标指向输入张量 ``x`` 写入输出数组的位置 - - **array** (Variable|list) – 会被输入张量 ``x`` 写入的输出结果 ``LOD_TENSOR_ARRAY`` 。如果该项值为None, 一个新的 ``LOD_TENSOR_ARRAY`` 将会被创建并作为结果返回 + - **x** (Variable) – 待写入的数据,多维Tensor或LoDTensor,数据类型支持float32,float64,int32,int64 + - **i** (Variable) – shape为[1]的1-D Tensor,表示写入到输出数组LoDTensorArray的位置,数据类型为int64 + - **array** (Variable,可选) – 指定写入 ``x`` 的数组LoDTensorArray。默认值为None, 此时将创建新的LoDTensorArray并作为结果返回 -返回: 输入张量 ``x`` 所写入的输出结果 ``LOD_TENSOR_ARRAY`` +返回: 写入输入 ``x`` 之后的LoDTensorArray -返回类型: 变量(Variable) +返回类型: Variable **代码示例** -.. code-block:: python +.. code-block:: python import paddle.fluid as fluid - tmp = fluid.layers.zeros(shape=[10], dtype='int32') + tmp = fluid.layers.fill_constant(shape=[3, 2], dtype='int64', value=5) i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=10) + #将tmp写入数组arr下标为10的位置,并返回arr arr = fluid.layers.array_write(tmp, i=i) - - - - - - - - - - + #此时arr是长度为11的LoDTensorArray,可以通过array_read来查看下标为10的LoDTensor,并将之打印出来 + item = fluid.layers.array_read(arr, i=i) + input = fluid.layers.Print(item, message="The content of i-th LoDTensor:") + main_program = fluid.default_main_program() + exe = fluid.Executor(fluid.CPUPlace()) + exe.run(main_program) + +**输出结果** + +.. code-block:: python + + 1570533133 The content of i-th LoDTensor: The place is:CPUPlace + Tensor[array_read_0.tmp_0] + shape: [3,2,] + dtype: l + data: 5,5,5,5,5,5, + #返回了shape为[3,2]的Tensor,即为上面写入的tmp + #dtype为对应C++数据类型,在不同环境下可能显示值不同,但本质一致 + #例如:如果Tensor中数据类型是int64,则对应的C++数据类型为int64_t,所以dtype值为typeid(int64_t).name(), + # 其在MacOS下为'x',linux下为'l',Windows下为'__int64',都表示64位整型变量