深度学习数据集定义与加载
深度学习模型在训练时需要大量的数据来完成模型调优,这个过程均是数字的计算,无法直接使用原始图片和文本等来完成计算。因此与需要对原始的各种数据文件进行处理,转换成深度学习模型可以使用的数据类型。
一、框架自带数据集
飞桨框架将深度学习任务中常用到的数据集作为领域API开放,对应API所在目录为paddle.vision.datasets与paddle.text.datasets,可以通过以下代码飞桨框架中提供了哪些数据集。
import paddle
print(‘视觉相关数据集:’, paddle.vision.datasets.all)
print(‘自然语言相关数据集:’, paddle.text.datasets.all)
视觉相关数据集: [‘DatasetFolder’, ‘ImageFolder’, ‘MNIST’, ‘FashionMNIST’, ‘Flowers’, ‘Cifar10’, ‘Cifar100’, ‘VOC2012’]
自然语言相关数据集: [‘Conll05st’, ‘Imdb’, ‘Imikolov’, ‘Movielens’, ‘UCIHousing’, ‘WMT14’, ‘WMT16’]
警告
除paddle.vision.dataset与paddle.text.dataset外,飞桨框架还内置了另一套数据集,路径为paddle.dataset.*,但是该数据集的使用方式较老,会在未来的版本废弃,尽量不要使用该目录下数据集的API。
这里可以定义手写数字体的数据集,其它数据集的使用方式也都类似。用mode来标识训练集与测试集。数据集接口会自动从远端下载数据集到本机缓存目录~/.cache/paddle/dataset。
from paddle.vision.transforms import ToTensor

训练数据集 用ToTensor将数据格式转为Tensor

train_dataset = paddle.vision.datasets.MNIST(mode=‘train’, transform=ToTensor())

验证数据集

val_dataset = paddle.vision.datasets.MNIST(mode=‘test’, transform=ToTensor())
二、自定义数据集
在实际的场景中,更多需要使用已有的相关数据来定义数据集。可以使用飞桨提供的paddle.io.Dataset基类,来快速实现自定义数据集。
import paddle
from paddle.io import Dataset

BATCH_SIZE = 64
BATCH_NUM = 20

IMAGE_SIZE = (28, 28)
CLASS_NUM = 10

class MyDataset(Dataset):
“”"
步骤一:继承paddle.io.Dataset类
“”"
def init(self, num_samples):
“”"
步骤二:实现构造函数,定义数据集大小
“”"
super(MyDataset, self).init()
self.num_samples = num_samples

def __getitem__(self, index):"""步骤三:实现__getitem__方法,定义指定index时如何获取数据,并返回单条数据(训练数据,对应的标签)"""data = paddle.uniform(IMAGE_SIZE, dtype='float32')label = paddle.randint(0, CLASS_NUM-1, dtype='int64')return data, labeldef __len__(self):"""步骤四:实现__len__方法,返回数据集总数目"""return self.num_samples

测试定义的数据集

custom_dataset = MyDataset(BATCH_SIZE * BATCH_NUM)

print(’=custom dataset=’)
for data, label in custom_dataset:
print(data.shape, label.shape)
break
=custom dataset=
[28, 28] [1]
通过以上的方式,就可以根据实际场景,构造自己的数据集。
三、数据加载
飞桨推荐使用paddle.io.DataLoader完成数据的加载。简单的示例如下:
train_loader = paddle.io.DataLoader(custom_dataset, batch_size=BATCH_SIZE, shuffle=True)

如果要加载内置数据集,将 custom_dataset 换为 train_dataset 即可

for batch_id, data in enumerate(train_loader()):
x_data = data[0]
y_data = data[1]

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

[64, 28, 28]
[64, 1]
通过上述的方法,就定义了一个数据迭代器train_loader, 用于加载训练数据。通过batch_size=64设置了数据集的批大小为64,通过shuffle=True,在取数据前会打乱数据。此外,还可以通过设置num_workers来开启多进程数据加载,提升加载速度。
注解
DataLoader 默认用异步加载数据的方式来读取数据,一方面可以提升数据加载的速度,另一方面也会占据更少的内存。如果需要同时加载全部数据到内存中,设置use_buffer_reader=False。

深度学习数据集定义与加载相关推荐

  1. 【深度学习】(2) 数据加载,前向传播2,附python完整代码

    生成数据集: tf.data.Dataset.from_tensor_slices(tensor变量) 创建一个数据集,其元素是给定张量的切片 生成迭代器: next(iter()) next() 返 ...

  2. PyTorch框架学习十九——模型加载与保存

    PyTorch框架学习十九--模型加载与保存 一.序列化与反序列化 二.PyTorch中的序列化与反序列化 1.torch.save 2.torch.load 三.模型的保存 1.方法一:保存整个Mo ...

  3. 捡漏!用谷歌图片搜索自制深度学习数据集 | 教程

    铜灵 编译整理 量子位 出品 | 公众号 QbitAI 就怕前脚刚立志搞个新研究,后脚就发现没有合适的数据集可用.AI工程师从入门到放弃,可能就是这么一会的功夫. 别找了,现在深度学习数据集也能自制了 ...

  4. OpenCasCade学习笔记(三):加载显示STEP格式图片,并实现平移、缩放和旋转操作

    OpenCasCade学习笔记(三):加载显示STEP格式图片,并实现平移.缩放和旋转操作 C3DWidget.h #pragma once#include <QtWidgets/QApplic ...

  5. B站刘二大人-数据集及数据加载 Lecture 8

    系列文章: <PyTorch深度学习实践>完结合集-B站刘二大人 Pytorch代码注意的细节,容易敲错的地方 B站刘二大人-线性回归及梯度下降 Lecture3 B站刘二大人-反向传播L ...

  6. 01_01 python机器学习_第一章学习内容整理_加载样本数据绘制散点图

    第一章学习内容整理_加载样本数据&绘制散点图 01 常用包说明 python可以解决很多问题,相应解决方案使用的包也很多,不太好记忆. 为了便于记忆,用大白话简单描述一下各个包的功能. # 科 ...

  7. detectron2使用自定义数据集及数据加载

    1.使用自定义数据集 数据集中列出了detectron2中内置支持的数据集.如果要使用自定义数据集,同时还重复使用detectron2的数据加载器,则需要: 1)注册您的数据集(即,告诉detectr ...

  8. ios网络学习------4 UIWebView的加载本地数据的三种方式

    ios网络学习------4 UIWebView的加载本地数据的三种方式 分类: IOS2014-06-27 12:56 959人阅读 评论(0) 收藏 举报 UIWebView是IOS内置的浏览器, ...

  9. 深度学习数据集制作工作_创建我的第一个深度学习+数据科学工作站

    深度学习数据集制作工作 My Home Setup 我的家庭设置 Creating my workstation has been a dream for me, if nothing else. 创 ...

最新文章

  1. H.264---CABAC---基础---二进制算术编码
  2. 2016年蓝桥杯省赛题解
  3. 解决springmvc在单纯返回一个字符串对象时所出现的乱码情况(极速版)
  4. 论文浅尝 | 问题多样性对于问答的帮助
  5. std::move()源码分析
  6. CUDA 开启GPU之间的P2P通信功能
  7. VB.NET在线升级程序源代码,可以独立使用
  8. php过滤句尾空格,php正则过滤各种标签,空格,换行符的实现方法
  9. 我是如何在5 天内,完成 60 个类的核心模块的重构
  10. [转]WebGL中文教程
  11. 黑马程序员全套Java教程_Java基础入门视频教程零基础自学Java必备教程视频讲义(4)
  12. minecraftjava版光追_我的世界:网易版终于更新狐狸生物?Java版光追技术已开始测试?...
  13. Zabbix离线安装部署
  14. Max Script|控制摄像机
  15. 超详细VRRP基础配置
  16. java开发基础知识学习总结
  17. 欠债还钱,天经地义(一)
  18. Android批量添加联系人到通讯录
  19. Automated defect inspection system for metal surfaces based on deep learning and data augmentation
  20. Zabbix 3.2 课程精讲-庄博-专题视频课程

热门文章

  1. 2022-2028年中国数字化档案加工行业市场深度分析及发展策略分析报告
  2. Linux shell 学习笔记(8)— 使用结构化命令(if-then 语句、数值比较、字符串比较、文件比较、case 语句)
  3. 用男女朋友关系解释计算机常用概念
  4. pytorch常用代码
  5. java.lang.NullPointerException异常原因及解决
  6. LeetCode简单题之按键持续时间最长的键
  7. 你了解计算机系统的层次结构吗?计算机语言怎么发展的?
  8. DPU(Data Processing Unit)数据处理器
  9. MLPerf结果证实至强® 可有效助力深度学习训练
  10. 新的微芯片MCU增加了来自外部闪存的安全引导保护