准备步骤

    生成的数据类型可以为Numpy Array或LoDTensor。根据Reader返回的数据形式的不同,可分为Batch级的Reader和Sample(样本)级的Reader。

    Batch级的Reader每次返回一个Batch的数据,Sample级的Reader每次返回单个样本的数据

    如果您的数据是Sample级的数据,我们提供了一个可以数据预处理和组建batch的工具: 。

    用户需使用 fluid.data 在网络中定义数据层变量。定义数据层变量时需指明数据层的名称name、数据类型dtype和维度shape。例如:

    其中,None表示不确定的维度。此例子中None的含义为batch size。

    • 异步DataLoader接口方式

    用户需要先使用 fluid.io.DataLoader 定义DataLoader对象,然后通过DataLoader对象的set方法设置数据源。 使用DataLoader接口时,数据传入与模型训练/预测过程是异步进行的,效率较高,推荐使用。

    用户自行构造输入数据,并在 或 fluid.ParallelExecutor 中使用 executor.run(feed=…) 传入训练数据。数据准备和模型训练/预测的过程是同步进行的, 效率较低。

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

    根据Reader数据类型的不同,上述步骤的具体操作将有所不同,具体介绍如下:

    若自定义的Reader每次返回单个样本的数据,用户需通过以下步骤完成数据送入:

    Step 1. 组建数据

    Step 2. 送入数据

    若使用异步DataLoader接口方式送入数据,请调用 set_sample_generator 或 接口完成,具体请参见: 异步数据读取

    若使用同步Feed方式送入数据,请使用DataFeeder接口将Reader数据转换为LoDTensor格式后送入网络,具体请参见 。

    读取Batch级Reader数据

    Step 1. 组建数据

    由于Batch已经组好,已经满足了Step 1的条件,可以直接进行Step 2。

    Step 2. 送入数据

    若使用异步DataLoader接口方式送入数据,请调用DataLoader的 set_batch_generator 接口完成,具体方式请参见: 。

    若使用同步Feed方式送入数据,具体请参见: 同步数据读取