python|打造paddle数据读器Data reader取全流程【划桨员的自我修养【paddle学习笔记】】

在训练和测试时,PaddlePaddle需要读取数据。为了简化用户编写数据读取代码的工作,我们定义了

  • reader是一个读取数据(从文件、网络、随机数生成器等)并生成数据项的函数。
  • reader creator是返回reader的函数。
  • reader decorator是一个函数,它接受一个或多个reader,并返回一个reader。
  • batch reader是一个函数,它读取数据(从reader、文件、网络、随机数生成器等)并生成一批数据项。

paddle.reader.buffered(reader, size)
创建缓冲数据读取器。
缓冲数据reader将读取数据条目并将其保存到缓冲区中。只要缓冲区不为空,就将继续从缓冲数据读取器读取数据。
参数
  • reader (callable) - 要读取的数据读取器
  • size (int) - 最大缓冲
返回 缓冲数据的读取器

paddle.fluid.io.shuffle(reader, buffer_size)
【python|打造paddle数据读器Data reader取全流程【划桨员的自我修养【paddle学习笔记】】】该接口创建一个数据读取器,其功能是将原始数据读取器的数据打乱,然后返回无序的数据。
从原始数据读取器取出buf_size个数据到缓冲区,将缓冲区数据打乱,然后将无序的数据依次返回。当缓冲区数据全部输出后,再次执行上述步骤。
参数:
  • reader (callable) – 原始数据读取器。
  • buf_size (int) – 缓冲区保存数据的个数。
返回:返回无序数据的数据读取器
代码案例
写一个cifar-10数据集的数据读取器,并执行乱序,分批次读取,打印第一个batch数据的shape、类型信息。
import paddle import numpy as npcifar10_reader = paddle.batch(paddle.dataset.cifar.train10(), batch_size=10) cifar10_train_reader = paddle.reader.shuffle(cifar10_reader, 20)for id_batch, data_batch in enumerate(cifar10_train_reader()): data = https://www.it610.com/article/np.array([x[0] for x in data_batch]).astype('float32') label = np.array([x[1] for x in data_batch]).astype('float32')print("image data shape:",data.shape, data[2]) print("label data shape:",label.shape, label[2]) break print("32*32*3=",32*32*3) # weight*height*channel 3 # cifar 10种类别图片


paddle.dataset.cifar.train10(cycle=False)
CIFAR-10训练数据集的creator。
它返回一个reader creator, reader中的每个样本的图像像素范围是[0,1],标签范围是[0,9]。
参数
  • cycle (bool) – 是否循环使用数据集
返回
训练数据集的reader creator
返回类型 callable


    推荐阅读