paddlepaddle(一)数据集

目录

1内置数据集

1.1paddle.vision视觉库

1.2paddle.text自然语言库

2.自定义数据集

3.数据加载器


1内置数据集

1.1paddle.vision视觉库

import paddle
print(paddle.vision.datasets.__all__)

#####
['DatasetFolder', 'ImageFolder', 'MNIST', 'FashionMNIST', 
'Flowers', 'Cifar10', 'Cifar100', 'VOC2012']

使用方式(以MNIST为例):

  • mode (str) - 'train' 或 'test' 模式,默认为 'train' 。加载训练集或测试集

  • download (bool) - 当 data_file 是 None 时,该参数决定是否自动下载数据集文件。默认为 True 。

  • backend(str,可选)- 指定图像的返回类型:PIL.Image 或 numpy.ndarray。应该是``{'pil','cv2'}`` 之一。如果未设置此选项,将从paddle.vsion.get_image_backend获取,默认为 pil 。 默认值:None。

  • image_path (str) 和label_path (str)指定下载目录 

import paddle.vision.datasets as datasets
data  = datasets.MNIST(mode='test', download=False, backend='pil')
print('image: ', data[0][0], 'label: ', data[0][1])

#####
image:  <PIL.Image.Image image mode=L size=28x28 at 0x7FCB931D0610> label:  [7]

1.2paddle.text自然语言库

import paddle
print(paddle.text.__all__)

###
['Conll05st', 'Imdb', 'Imikolov', 'Movielens', 'UCIHousing', 
 'WMT14', 'WMT16', 'ViterbiDecoder', 'viterbi_decode']

使用方式(以WMT4)为例

  • data_file(str)- 保存数据集压缩文件的路径, 如果参数:attr: download 设置为True,可设置为None。默认为None。

  • mode(str)- 'train', 'test' 或'gen'。默认为'train'。

  • dict_size(int)- 词典大小。默认为-1。

  • download(bool)- 如果:attr: data_file 未设置,是否自动下载数据集。默认为True。

from paddle.text.datasets import WMT14
wmt14 = WMT14(mode='test', dict_size=50)
src_ids, trg_ids, trg_ids_next = wmt14[0]
print(src_ids, trg_ids, trg_ids_next)

######
[ 0 32  2  2 24 38  2  8  2 20  6  2  3  2  1] [0 2 2 2 2 2 2 2] [2 2 2 2 2 2 2 1]

2.自定义数据集

paddle.io.Dataset类

映射式(map-style)数据集需要继承这个基类,映射式数据集为可以通过一个键值索引并获取指定样本的数据集,所有映射式数据集须实现以下方法:

__getitem__: 根据给定索引获取数据集中指定样本,在 paddle.io.DataLoader 中需要使用此函数通过下标获取样本。

__len__: 返回数据集样本个数, paddle.io.BatchSampler 中需要样本个数生成下标序列。

from paddle.io import Dataset
import paddle

class MyDataSet(Dataset):
    def __init__(self, num_samples):
        super(MyDataSet, self).__init__()
        self.num_samples = num_samples
        
    def __getitem__(self, index):
        data = paddle.uniform(IMAGE_SIZE, dtype='float32')
        label = paddle.randint(0, 9, dtype='int64')

        return data, label

    def __len__(self):
        return self.num_samples

3.数据加载器

paddle.io.DataLoader类

DataLoader返回一个迭代器,该迭代器根据 batch_sampler 给定的顺序迭代一次给定的 dataset

DataLoader支持单进程和多进程的数据加载方式,当 num_workers 大于0时,将使用多进程方式异步加载数据。

DataLoader当前支持 map-style 和 iterable-style 的数据集, map-style 的数据集可通过下标索引样本,请参考 paddle.io.Dataset ; iterable-style 数据集只能迭代式地获取样本,类似Python迭代器,请参考 paddle.io.IterableDataset 。

from paddle.io import DataLoader
custom_dataset = MyDataSet(20*64)
dataloder = DataLoader(custom_dataset, batch_size=64, shuffle=True)
for batch_id, data in enumerate(dataloder):
    x_data = data[0]
    y_data = data[1]

    print(x_data.shape)
    print(y_data.shape)
    break

#####
[64, 28, 28]
[64, 1]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值