index.rst 3.7 KB
Newer Older
Y
yuyang18 已提交
1 2 3 4 5 6
..  _user_guide_prepare_data:

########
准备数据
########

Z
Zeng Jinle 已提交
7
使用PaddlePaddle Fluid准备数据分为两个步骤:
Y
yuyang18 已提交
8

C
Cheerego 已提交
9 10
Step1: 自定义Reader生成训练/预测数据
###################################
Z
Zeng Jinle 已提交
11

C
Cheerego 已提交
12
生成的数据类型可以为Numpy Array或LoDTensor。根据Reader返回的数据形式的不同,可分为Batch级的Reader和Sample(样本)级的Reader。
Z
Zeng Jinle 已提交
13

C
Cheerego 已提交
14
Batch级的Reader每次返回一个Batch的数据,Sample级的Reader每次返回单个样本的数据
Z
Zeng Jinle 已提交
15

C
Cheerego 已提交
16
如果您的数据是Sample级的数据,我们提供了一个可以数据预处理和组建batch的工具::code:`Python Reader` 。
Z
Zeng Jinle 已提交
17

C
Cheerego 已提交
18 19 20 21 22 23 24 25 26

Step2: 将数据送入网络进行训练/预测
###################################

Fluid提供两种方式,分别是同步Feed方式或异步py_reader接口方式,具体介绍如下:

- 同步Feed方式

用户需使用 :code:`fluid.layers.data`
J
Jeff Wang 已提交
27
配置数据输入层,并在 :code:`fluid.Executor` 或 :code:`fluid.ParallelExecutor`
Z
Zeng Jinle 已提交
28 29
中使用 :code:`executor.run(feed=...)` 传入训练数据。数据准备和模型训练/预测的过程是同步进行的,
效率较低。
Y
yuyang18 已提交
30

C
Cheerego 已提交
31 32 33
- 异步py_reader接口方式

用户需要先使用 :code:`fluid.layers.py_reader` 配置数据输入层,然后使用
S
sneaxiy 已提交
34
:code:`py_reader` 的 :code:`decorate_paddle_reader` 或 :code:`decorate_tensor_provider`
Z
Zeng Jinle 已提交
35 36
方法配置数据源,再通过 :code:`fluid.layers.read_file` 读取数据。数据传入与模型训练/预测过程是异步进行的,
效率较高。
S
sneaxiy 已提交
37

Y
yuyang18 已提交
38 39 40

这两种准备数据方法的比较如下:

S
sneaxiy 已提交
41
========  =================================   =====================================
Z
Zeng Jinle 已提交
42
对比项            同步Feed方式                          异步py_reader接口方式
S
sneaxiy 已提交
43 44
========  =================================   =====================================
API接口     :code:`executor.run(feed=...)`       :code:`fluid.layers.py_reader`
Z
Zeng Jinle 已提交
45
数据格式         Numpy Array或LoDTensor               Numpy Array或LoDTensor
S
sneaxiy 已提交
46 47 48 49
数据增强          Python端使用其他库完成                  Python端使用其他库完成
速度                     慢                                   快
推荐用途                调试模型                              工业训练
========  =================================   =====================================
Y
yuyang18 已提交
50

C
Cheerego 已提交
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
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`

Z
Zeng Jinle 已提交
80
读取Batch级Reader数据
C
Cheerego 已提交
81 82 83 84 85 86 87 88 89
+++++++++++++++++++++++

Step1. 组建数据
=================

由于Batch已经组好,已经满足了Step1的条件,可以直接进行Step2

Step2. 送入数据
=================================
Y
yuyang18 已提交
90

Z
Zeng Jinle 已提交
91
若使用同步Feed方式送入数据,具体请参见:
Y
yuyang18 已提交
92 93

.. toctree::
S
shanyi15 已提交
94
   :maxdepth: 1
Y
yuyang18 已提交
95

S
sneaxiy 已提交
96
   feeding_data.rst
Y
yuyang18 已提交
97

Z
Zeng Jinle 已提交
98
若使用异步py_reader接口方式送入数据,请调用py_reader的 :code:`decorate_tensor_provider` 接口完成,具体方式请参见:
Y
yuyang18 已提交
99 100

.. toctree::
S
shanyi15 已提交
101
   :maxdepth: 1
Y
yuyang18 已提交
102

Z
Zeng Jinle 已提交
103
   use_py_reader.rst
S
sneaxiy 已提交
104 105


Z
Zeng Jinle 已提交
106 107