Reader

    的确,data reader不必是读取和生成数据项的函数,它可以是任何不带参数的函数来创建一个iterable(任何东西都可以被用于 ):

    从iterable生成的元素应该是单个数据条目,而不是mini batch。数据输入可以是单个项目,也可以是项目的元组,但应为 Fluid目前支持的数据类型 (如, numpy 1d array of float32, int, list of int)

    单项目数据读取器创建者的示例实现:

    1. def reader_creator_random_image(width, height):
    2. def reader():
    3. while True:
    4. yield numpy.random.uniform(-1, 1, size=width*height)

    多项目数据读取器创建者的示例实现:

    方法

    创建缓冲数据读取器。

    缓冲数据reader将读取数据条目并将其保存到缓冲区中。只要缓冲区不为空,就将继续从缓冲数据读取器读取数据。

    参数

    • reader (callable) - 要读取的数据读取器
    • size (int) - 最大缓冲

    返回 缓冲数据的读取器

    paddle.reader.chain(*readers)

    注意:paddle.reader.chain是paddle.fluid.io.chain的别名,推荐使用paddle.fluid.io.chain。

    详见 chain 接口的使用文档。

    paddle.reader.shuffle(reader, buf_size)

    注意:paddle.reader.shuffle是paddle.fluid.io.shuffle的别名,推荐使用paddle.fluid.io.shuffle。

    注意:paddle.reader.firstn是paddle.fluid.io.firstn的别名,推荐使用paddle.fluid.io.firstn。

    详见 firstn 接口的使用文档。

    paddle.reader.xmap_readers(mapper, reader, process_num, buffer_size, order=False)

    通过多线程方式,通过用户自定义的映射器mapper来映射reader返回的样本(到输出队列)。

    参数

    返回 一个将原数据进行映射后的decorated reader。

    返回类型

    callable

    paddle.reader.PipeReader(command, bufsize=8192, file_type=’plain’)

    PipeReader通过流从一个命令中读取数据,将它的stdout放到管道缓冲区中,并将其重定向到解析器进行解析,然后根据需要的格式生成数据。

    您可以使用标准Linux命令或调用其他Program来读取数据,例如通过HDFS、CEPH、URL、AWS S3中读取:

    代码示例

    1. for f in myfiles:
    2. pr = PipeReader("cat %s"%f)
    3. for l in pr.get_line():
    4. yield sample

    参数

    返回类型

    string

    paddle.reader.multiprocess_reader(readers, use_pipe=True, queue_size=1000)

    多进程reader使用python多进程从reader中读取数据,然后使用multi process.queue或multi process.pipe合并所有数据。进程号等于输入reader的编号,每个进程调用一个reader。

    multiprocess.queue需要/dev/shm的rw访问权限,某些平台不支持。

    您需要首先创建多个reader,这些reader应该相互独立,这样每个进程都可以独立工作。

    代码示例

    paddle.reader.Fake

    Fakereader将缓存它读取的第一个数据,并将其输出data_num次。它用于缓存来自真实reader的数据,并将其用于速度测试。

    参数

    • reader – 原始读取器。
    • data_num – reader产生数据的次数 。

    返回

    一个Fake读取器

    代码示例

    1. def reader():
    2. for i in range(10):
    3. yield i