diff --git a/doc/fluid/user_guides/howto/prepare_data/feeding_data.rst b/doc/fluid/user_guides/howto/prepare_data/feeding_data.rst index a0ac8602c37f12c2621aaee627815d189e7dc245..24ebd3bcf67d11c71e643da6ce7cd645a497177f 100644 --- a/doc/fluid/user_guides/howto/prepare_data/feeding_data.rst +++ b/doc/fluid/user_guides/howto/prepare_data/feeding_data.rst @@ -1,8 +1,8 @@ .. _user_guide_use_numpy_array_as_train_data: -############################ -使用同步Feed方式读取训练和测试数据 -############################ +############## +同步数据读取 +############## PaddlePaddle Fluid支持使用 :code:`fluid.layers.data()` 配置数据层; 再使用 Numpy Array 或者直接使用Python创建C++的 @@ -166,4 +166,4 @@ PaddlePaddle Fluid目前支持的数据类型包括: * uint64: 次要标签类型 * bool: 控制流数据类型 * int16: 次要标签类型 - * uint8: 输入数据类型,可用于图像像素 \ No newline at end of file + * uint8: 输入数据类型,可用于图像像素 diff --git a/doc/fluid/user_guides/howto/prepare_data/index.rst b/doc/fluid/user_guides/howto/prepare_data/index.rst index 2435d0b32a3f6765cb721db03e0abde20939c810..edad4aaf106a5a5ba7501dce7fc53f856bb7be58 100644 --- a/doc/fluid/user_guides/howto/prepare_data/index.rst +++ b/doc/fluid/user_guides/howto/prepare_data/index.rst @@ -6,21 +6,31 @@ 使用PaddlePaddle Fluid准备数据分为两个步骤: -- 自定义Reader生成训练/预测数据,生成的数据类型可以为Numpy Array或LoDTensor。根据Reader返回的数据形式的不同,可分为Batch级的Reader(每次返回一个batch的数据)和样本级的Reader(每次返回单个样本的数据)。 +Step1: 自定义Reader生成训练/预测数据 +################################### -- 使用同步Feed方式或异步py_reader接口方式将数据送入网络进行训练/预测。 +生成的数据类型可以为Numpy Array或LoDTensor。根据Reader返回的数据形式的不同,可分为Batch级的Reader和Sample(样本)级的Reader。 -同步Feed方式和异步py_reader接口方式的比较 -###################################### +Batch级的Reader每次返回一个Batch的数据,Sample级的Reader每次返回单个样本的数据 -同步Feed方式和异步py_reader接口方式的不同体现于: +如果您的数据是Sample级的数据,我们提供了一个可以组建batch及数据预处理的工具::code:`Python Reader` 。 -1. 同步Feed方式:用户需使用 :code:`fluid.layers.data` + +Step2: 将数据送入网络进行训练/预测 +################################### + +Fluid提供两种方式,分别是同步Feed方式或异步py_reader接口方式,具体介绍如下: + +- 同步Feed方式 + +用户需使用 :code:`fluid.layers.data` 配置数据输入层,并在 :code:`fluid.Executor` 或 :code:`fluid.ParallelExecutor` 中使用 :code:`executor.run(feed=...)` 传入训练数据。数据准备和模型训练/预测的过程是同步进行的, 效率较低。 -2. 异步py_reader接口方式:用户需要先使用 :code:`fluid.layers.py_reader` 配置数据输入层,然后使用 +- 异步py_reader接口方式 + +用户需要先使用 :code:`fluid.layers.py_reader` 配置数据输入层,然后使用 :code:`py_reader` 的 :code:`decorate_paddle_reader` 或 :code:`decorate_tensor_provider` 方法配置数据源,再通过 :code:`fluid.layers.read_file` 读取数据。数据传入与模型训练/预测过程是异步进行的, 效率较高。 @@ -38,8 +48,45 @@ API接口 :code:`executor.run(feed=...)` :code:`fluid.layers.py_reader 推荐用途 调试模型 工业训练 ======== ================================= ===================================== +Reader数据类型对使用方式的影响 +############################### + +根据Reader数据类型的不同,上述Step1和Step2的具体操作将有所不同,具体介绍如下: + +读取Sample级Reader数据 ++++++++++++++++++++++ + +若自定义的Reader每次返回单个样本的数据,用户需通过以下步骤完成数据送入: + +Step1. 组建数据 +============================= + +调用Fluid提供的Reader相关接口完成组batch和部分的数据预处理功能,具体请参见: + +.. toctree:: + :maxdepth: 1 + + reader_cn.md + +Step2. 送入数据 +================================= + +若使用同步Feed方式送入数据,请使用DataFeeder接口将Reader数据转换为LoDTensor格式后送入网络,具体请参见 :ref:`cn_api_fluid_DataFeeder` + +若使用异步py_reader接口方式送入数据,请调用 :code:`decorate_paddle_reader` 接口完成,具体请参见: + +- :ref:`user_guides_use_py_reader` + 读取Batch级Reader数据 -####################### ++++++++++++++++++++++++ + +Step1. 组建数据 +================= + +由于Batch已经组好,已经满足了Step1的条件,可以直接进行Step2 + +Step2. 送入数据 +================================= 若使用同步Feed方式送入数据,具体请参见: @@ -55,18 +102,6 @@ API接口 :code:`executor.run(feed=...)` :code:`fluid.layers.py_reader use_py_reader.rst -读取样本级Reader数据 -##################### -若自定义的Reader每次返回单个样本的数据,用户需通过以下步骤完成数据送入: - -1.调用Fluid提供的Reader相关接口完成组batch和部分的数据预处理功能,具体请参见: - -.. toctree:: - :maxdepth: 1 - - reader_cn.md -2.若使用同步Feed方式送入数据,请使用DataFeeder接口将Reader数据转换为LoDTensor格式后送入网络,具体请参见 :ref:`cn_api_fluid_DataFeeder` 。若使用异步py_reader接口方式送入数据,请调用 :code:`decorate_paddle_reader` 接口完成,具体请参见: -- :ref:`user_guides_use_py_reader` diff --git a/doc/fluid/user_guides/howto/prepare_data/reader_cn.md b/doc/fluid/user_guides/howto/prepare_data/reader_cn.md index 840c9bebae5af41de18af975117296aa35d0334f..bc2ecf35cb81134b678b5748fff08f19503983c6 100644 --- a/doc/fluid/user_guides/howto/prepare_data/reader_cn.md +++ b/doc/fluid/user_guides/howto/prepare_data/reader_cn.md @@ -1,5 +1,6 @@ -# Python Reader -在模型训练和预测阶段,PaddlePaddle程序需要读取训练或预测数据。为了帮助用户编写数据读取的代码,我们提供了如下接口: +# 数据预处理工具 + +在模型训练和预测阶段,PaddlePaddle程序需要读取训练或预测数据。为了帮助您编写数据读取的代码,我们提供了如下接口: - *reader*: 样本级的reader,用于读取数据的函数,数据可来自于文件、网络、随机数生成器等,函数每次返回一个样本数据项。 - *reader creator*: 接受一个或多个reader作为参数、返回一个新reader的函数。 diff --git a/doc/fluid/user_guides/howto/prepare_data/use_py_reader.rst b/doc/fluid/user_guides/howto/prepare_data/use_py_reader.rst index 0b48a907a9609187a66f69651b2fd541d3ff0f8d..5db2134c6eb27f544c2c9ebbebf50315133f7438 100644 --- a/doc/fluid/user_guides/howto/prepare_data/use_py_reader.rst +++ b/doc/fluid/user_guides/howto/prepare_data/use_py_reader.rst @@ -1,8 +1,8 @@ .. _user_guides_use_py_reader: -############################ -使用PyReader读取训练和测试数据 -############################ +############# +异步数据读取 +############# 除同步Feed方式外,我们提供了PyReader。PyReader的性能比 :ref:`user_guide_use_numpy_array_as_train_data` 更好,因为PyReader的数据读取和模型训练过程是异步进行的,且能与 :code:`double_buffer_reader` 配合以进一步提高数据读取性能。此外, :code:`double_buffer_reader` 负责异步完成CPU Tensor到GPU Tensor的转换,一定程度上提升了数据读取效率。