从零开始深度学习Pytorch笔记(11)—— DataLoader类
小黄用python
共 2593字,需浏览 6分钟
· 2020-04-10
前文传送门:从零开始深度学习Pytorch笔记(1)——安装Pytorch从零开始深度学习Pytorch笔记(2)——张量的创建(上)从零开始深度学习Pytorch笔记(3)——张量的创建(下)从零开始深度学习Pytorch笔记(4)——张量的拼接与切分从零开始深度学习Pytorch笔记(5)——张量的索引与变换从零开始深度学习Pytorch笔记(6)——张量的数学运算从零开始深度学习Pytorch笔记(7)—— 使用Pytorch实现线性回归从零开始深度学习Pytorch笔记(8)—— 计算图与自动求导(上)
从零开始深度学习Pytorch笔记(9)—— 计算图与自动求导(下)从零开始深度学习Pytorch笔记(10)—— Dataset类
DataLoader(dataset, batch_size=1, shuffle=False, sampler=None, batch_sampler=None, num_workers=0, collate_fn=None, pin_memory=False, drop_last=False, timeout=0, worker_init_fn=None, multiprocessing_context=None)其中的参数含义为:dataset:加载的数据集(Dataset对象)batch_size:batch的大小shuffle::是否将数据打乱sampler:样本抽样num_workers:使用多进程加载的进程数,0代表不使用多进程collate_fn:如何将多个样本数据拼接成一个batch,一般使用默认的拼接方式即可pin_memory:是否将数据保存在pin memory区,pin memory中的数据转到GPU会快一些drop_last:dataset中的数据个数可能不是batch_size的整数倍,drop_last如果为True会将多出来不足一个batch的数据丢弃我们给出一个简单的DataLoader的例子:
import torch其中的一个epoch为将所有训练集训练一次的意思,而一个batch指的是将一批训练数据交给模型训练的意思。例如以上代码的batchsize为5,训练集一共20条数据,所以一个epoch分为4个batch(因为20/5=4)。在深度学习中,所有训练集并不是只有一次加入模型训练,所以会有多个epoch的情况。我们把batchsize改为4,并且把数据打乱设置为False,再看看结果:
import torch.utils.data as Data
BATCH_SIZE = 5
x = torch.linspace(1, 20, 20)
y = torch.linspace(20, 1, 20)
torch_dataset = Data.TensorDataset(x, y)#创建Dataset
loader = Data.DataLoader(
dataset=torch_dataset,#数据
batch_size=BATCH_SIZE,#批次的大小
shuffle=True,#打乱数据
num_workers=2,#多进程
)
for epoch in range(3):#三个epoch
for step, (batch_x, batch_y) in enumerate(loader):
print('Epoch: ', epoch, '| Step: ', step, '| batch x: ',
batch_x.numpy(), '| batch y: ', batch_y.numpy())
import torch我们可以看到数据的batchsize变为了4,并且数据的输出是有序的,而深度学习中为了避免数据分布的干扰,一般都会讲数据打乱输入模型中!
import torch.utils.data as Data
BATCH_SIZE = 4
x = torch.linspace(1, 20, 20)
y = torch.linspace(20, 1, 20)
torch_dataset = Data.TensorDataset(x, y)#创建Dataset
loader = Data.DataLoader(
dataset=torch_dataset,#数据
batch_size=BATCH_SIZE,#批次的大小
shuffle=False,#打乱数据
num_workers=2,#多进程
)
for epoch in range(3):#三个epoch
for step, (batch_x, batch_y) in enumerate(loader):
print('Epoch: ', epoch, '| Step: ', step, '| batch x: ',
batch_x.numpy(), '| batch y: ', batch_y.numpy())
欢迎关注公众号学习之后的深度学习连载部分~
历史文章推荐阅读:
从零开始学自然语言处理(四)—— 做 NLP 任务文本 id 化与预训练词向量初始化方法
从零开始学自然语言处理(三)——手把手带你实现word2vec(skip-gram)
从零开始学自然语言处理(二)——手把手带你用代码实现word2vec
从零开始学自然语言处理(一)—— jieba 分词
一文详解NLP语料构建技巧你不知道的Python环境管理技巧,超级好用!
Python快速安装库的靠谱办法你只会用Python的pip安装包?别错过这些好用功能!
扫码下图关注我们不会让你失望!
评论
面试官:MySQL 上亿大表,如何深度优化?
来源:cnblogs.com/YangJiaXin/p/10828244.html背景分析测试实施索引优化后delete大表优化为小批量删除总结前段时间刚入职一家公司,就遇上这事!背景XX实例(一主一从)xxx告警中每天凌晨在报SLA报警,该报警的意思是存在一定的主从延迟(若在此时发生主从切换,需要
好好学java
0
文末送书 | 大模型时代下如何学习云原生
《containerd 原理剖析与实战》新书内购中,点击阅读原文,限时 69.9 元购买。文末免费赠书大模型与云原生近年来,大语言模型的热度可谓是愈发高涨,尤其是今年年初 Sora 的出现,更是让全球再次看到了AIGC 的巨大威力。Sora 生成实例视频---几头巨大的长毛猛犸踏着积雪的草地而来在当
云原生实验室
10
轻松学习C#:百度行驶证C++离线SDK接入详解
效果 先看最终效果SDK 拿到完整包如图,687M解压后看看内容发现有个readme.txt,那就先看看内容1:用vs2015打开sln工程,最好用vs2015 comunity版本,可微软官网下载。2:sdk的doc目录有pdf接口文档。3:工程总入口main.cpp、请参考示例实现您的功能。4:
DotNet NB
9
日语五十音图学习难吗?
学习日语的初学者们都知道,我们学习日语最初就必须要接触日语五十音图,虽然相对其他语言来说,五十音图挺不是很难学,但是很多初学者可能会记不住,别担心,老师为大家带来了学习经验分享,一起来看看吧!五十音图就是日语最基础的基础,也就是地基。由于日语的元音比较单调,只有a/i/u/e/o这五种,再和各种辅音
python教程
0
为什么现在Java连Date类都不建议使用了?
来源:juejin.cn/post/7343161506699313162有什么问题吗java.util.Date?java.util.Date(Date从现在开始)是一个糟糕的类型,这解释了为什么它的大部分内容在 Java 1.1 中被弃用(但不幸的是仍在使用)。设计缺陷包括:它的名称具有误导性:
Java专栏
10
人工智能周刊#17:Llama3、微调 LLMs 的 PyTorch 原生库、李彦宏内部讲话、900 个最受欢迎的AI 工具
在内部讲话中,李彦宏对大模型开源与闭源的路线选择,以及 AI 创业者应该专注模型还是应用等业界焦点话题,发表了自己的看法。人工智能周刊:关注Python、机器学习、深度学习、大模型等硬核技术本期目录:1、Meta 最新发布 Llama 3 80 亿和 700 亿参数版本2、「抱抱脸」公
机器学习算法与Python实战
10
【深度学习】一文看懂注意力机制
注意力是一种在广泛的神经结构中使用的越来越流行的机制。由于这一领域的快速发展,仍然缺乏对注意力的系统概述。在本文中,讨论了以往工作的不同方面,注意力机制的可能用途,并描述了该领域的主要研究工作和公开挑战。往期精彩回顾适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载机器学习及深
机器学习初学者
10
1885页学习资料,一本在手Python不愁!
Python3.11即将于下半年发布,新的版本速度提升2倍,以弥补与其他编程语言在速度上的缺陷。可以预见Python语言在未来的应用范围会越来越广。python学习方向建议:如果你是本科及以下学历,建议你学习以下两个方向1、爬虫。简单的爬虫库,代理爬虫,分布式爬虫等2、Web。学习主流Web框架,轻
菜鸟学Python
0