打造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)

该接口创建一个数据读取器,其功能是将原始数据读取器的数据打乱,然后返回无序的数据
从原始数据读取器取出buf_size个数据到缓冲区,将缓冲区数据打乱,然后将无序的数据依次返回。当缓冲区数据全部输出后,再次执行上述步骤。

参数:

  • reader (callable) – 原始数据读取器。
  • buf_size (int) – 缓冲区保存数据的个数。

返回:返回无序数据的数据读取器

代码案例

写一个cifar-10数据集的数据读取器,并执行乱序,分批次读取,打印第一个batch数据的shape、类型信息。

import paddle
import numpy as np

cifar10_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 = 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

 

 

你可能感兴趣的:(python,人工智能,深度学习,paddlepaddle)