DataLoader

    • from_generator(feed_list=None, capacity=None, use_double_buffer=True, iterable=True, return_list=False, use_multiprocess=False)

    本方法创建的DataLoader对象提供了3个方法设置数据源,分别是 set_sample_generator , 和 set_batch_generator 。请查阅下述示例代码了解它们的使用方法。

    如果iterable = True,本方法创建的DataLoader对象时一个Python生成器,可以for-range的方法循环迭代。

    • 参数:
      • feed_list (list(Variable)|tuple(Variable)) - feed变量列表,由 fluid.layers.data() 创建。
      • capacity (int) - DataLoader对象内部维护队列的容量大小。单位是batch数量。若reader读取速度较快,建议设置较大的capacity值。
      • use_double_buffer (bool) - 是否使用 。若use_double_buffer=True,DataLoader会异步地预读取下一个batch的数据,可加速数据读取过程,但同时会占用少量的CPU/GPU存储,即一个batch输入数据的存储空间。
      • return_list (bool) - 每个设备上的数据是否以list形式返回。仅在iterable = True模式下有效。若return_list = False,每个设备上的返回数据均是str -> LoDTensor的映射表,其中映射表的key是每个输入变量的名称。若return_list = True,则每个设备上的返回数据均是list(LoDTensor)。推荐在静态图模式下使用return_list = False,在动态图模式下使用return_list = True。
      • use_multiprocess (bool) - 设置是否是用多进程加速动态图的数据载入过程。注意:该参数的设置仅在动态图模式下有效, 在静态图模式下,该参数设置与否均无任何影响。默认值为False。

    返回: 被创建的DataLoader对象

    返回类型: loader (DataLoader)

    • from_dataset(dataset, places, drop_last=True)

    创建一个DataLoader对象用于加载Dataset产生的数据。目前,Dataset仅支持Linux系统下使用。

    • 参数:
      • dataset (InMemoryDataset|QueueDataset) - Dataset对象。
      • places (list(CUDAPlace)|list(CPUPlace)) - DataLoader对象返回数据所在的place。
      • drop_last (bool) - 是否丢弃最后样本数量不足batch size的batch。若drop_last = True则丢弃,若drop_last = False则不丢弃。

    返回: 被创建的DataLoader对象,可以for-range的方式循环迭代

    代码示例

    1.  
    2. image = fluid.layers.data(name='image', shape=[784], dtype='float32')
    3. label = fluid.layers.data(name='label', shape=[1], dtype='int64')
    4.  
    5. dataset = fluid.DatasetFactory().create_dataset("QueueDataset")
    6. dataset.set_batch_size(32)
    7. dataset.set_filelist(['a.txt', 'b.txt', 'c.txt'])
    8. dataset.set_use_var([image, label])
    9. dataset.set_pipe_command('cat')
    10. loader = fluid.io.DataLoader.from_dataset(dataset, fluid.cpu_places())