未验证 提交 587e9e16 编写于 作者: C Cheerego 提交者: GitHub

update_reading_data (#699)

上级 69eb3400
.. _user_guide_use_numpy_array_as_train_data: .. _user_guide_use_numpy_array_as_train_data:
############################ ##############
使用同步Feed方式读取训练和测试数据 同步数据读取
############################ ##############
PaddlePaddle Fluid支持使用 :code:`fluid.layers.data()` 配置数据层; PaddlePaddle Fluid支持使用 :code:`fluid.layers.data()` 配置数据层;
再使用 Numpy Array 或者直接使用Python创建C++的 再使用 Numpy Array 或者直接使用Python创建C++的
...@@ -166,4 +166,4 @@ PaddlePaddle Fluid目前支持的数据类型包括: ...@@ -166,4 +166,4 @@ PaddlePaddle Fluid目前支持的数据类型包括:
* uint64: 次要标签类型 * uint64: 次要标签类型
* bool: 控制流数据类型 * bool: 控制流数据类型
* int16: 次要标签类型 * int16: 次要标签类型
* uint8: 输入数据类型,可用于图像像素 * uint8: 输入数据类型,可用于图像像素
\ No newline at end of file
...@@ -6,21 +6,31 @@ ...@@ -6,21 +6,31 @@
使用PaddlePaddle Fluid准备数据分为两个步骤: 使用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:`fluid.Executor` 或 :code:`fluid.ParallelExecutor`
中使用 :code:`executor.run(feed=...)` 传入训练数据。数据准备和模型训练/预测的过程是同步进行的, 中使用 :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:`py_reader` 的 :code:`decorate_paddle_reader` 或 :code:`decorate_tensor_provider`
方法配置数据源,再通过 :code:`fluid.layers.read_file` 读取数据。数据传入与模型训练/预测过程是异步进行的, 方法配置数据源,再通过 :code:`fluid.layers.read_file` 读取数据。数据传入与模型训练/预测过程是异步进行的,
效率较高。 效率较高。
...@@ -38,8 +48,45 @@ API接口 :code:`executor.run(feed=...)` :code:`fluid.layers.py_reader ...@@ -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数据 读取Batch级Reader数据
####################### +++++++++++++++++++++++
Step1. 组建数据
=================
由于Batch已经组好,已经满足了Step1的条件,可以直接进行Step2
Step2. 送入数据
=================================
若使用同步Feed方式送入数据,具体请参见: 若使用同步Feed方式送入数据,具体请参见:
...@@ -55,18 +102,6 @@ API接口 :code:`executor.run(feed=...)` :code:`fluid.layers.py_reader ...@@ -55,18 +102,6 @@ API接口 :code:`executor.run(feed=...)` :code:`fluid.layers.py_reader
use_py_reader.rst 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`
# Python Reader # 数据预处理工具
在模型训练和预测阶段,PaddlePaddle程序需要读取训练或预测数据。为了帮助用户编写数据读取的代码,我们提供了如下接口:
在模型训练和预测阶段,PaddlePaddle程序需要读取训练或预测数据。为了帮助您编写数据读取的代码,我们提供了如下接口:
- *reader*: 样本级的reader,用于读取数据的函数,数据可来自于文件、网络、随机数生成器等,函数每次返回一个样本数据项。 - *reader*: 样本级的reader,用于读取数据的函数,数据可来自于文件、网络、随机数生成器等,函数每次返回一个样本数据项。
- *reader creator*: 接受一个或多个reader作为参数、返回一个新reader的函数。 - *reader creator*: 接受一个或多个reader作为参数、返回一个新reader的函数。
......
.. _user_guides_use_py_reader: .. _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的转换,一定程度上提升了数据读取效率。 除同步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的转换,一定程度上提升了数据读取效率。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册