Reader
的确,data reader不必是读取和生成数据项的函数,它可以是任何不带参数的函数来创建一个iterable(任何东西都可以被用于 ):
从iterable生成的元素应该是单个数据条目,而不是mini batch。数据输入可以是单个项目,也可以是项目的元组,但应为 Fluid目前支持的数据类型 (如, numpy 1d array of float32, int, list of int)
单项目数据读取器创建者的示例实现:
def reader_creator_random_image(width, height):
def reader():
while True:
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中读取:
代码示例
for f in myfiles:
pr = PipeReader("cat %s"%f)
for l in pr.get_line():
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读取器
代码示例
def reader():
for i in range(10):
yield i