(done) 解释 python3 torch.utils.data DataLoader

特别注意:DataLoader 返回的迭代器是无尽的,依据如下 (CHATGPT3.5)

在这里插入图片描述

DataLoader 返回的迭代器默认情况下是无尽的,因为它会无限地循环遍历数据集,以提供批量的数据。在训练神经网络时,通常会使用无尽的迭代器来循环遍历数据集,直到达到指定的训练 epoch 数量或其他停止条件。如果你想要控制迭代器的结束,可以通过设置 DataLoader 的参数 num_epochs 或者在你的训练循环中设置停止条件来实现。例如,在 PyTorch 中,你可以使用 torch.utils.data.DataLoader 的参数 num_epochs 来指定遍历数据集的次数。

torch.utils.data.DataLoader 是一个用来读取 .jsonl 文件的包

它会返回一个可迭代对象,这个对象的每一项是一个 “dict” 类型的数据,储存着 .jsonl 文件的每一行 json 对象

不一定是 “dict” 类型的数据,只是 python 在处理 json 文件时通常使用 dict 类型处理,实际上,也可以是元组或者其它的数据类型


一个寻常的使用用例如下:

# 1. 首先定义如下的一个类
class JSONLDataset(Dataset):# 当你创建一个类的新实例时,__init__方法会被自动调用,用来初始化实例的属性。def __init__(self, file_path):self.data = []with open(file_path, 'r', encoding='utf-8') as f:# .jsonl 的文件的每一行使用 json.loads 去加载它for line in f:self.data.append(json.loads(line.strip()))# 使用 len(这个类的对象) 时,会返回 __len__ 函数返回的东西def __len__(self):return len(self.data)# 使用 这个类的对象[integer] 时,会返回 __getitem__ 函数返回的东西def __getitem__(self, idx):return self.data[idx]# 2. 使用这个类,从 'train.jsonl' 读取训练集数据
train_dataset = JSONLDataset('train.jsonl')# 3. 使用 train_dataset 和 DataLoader,把 .jsonl 中的数据批次化处理,每 batch_size(如32) 个数据为一个批次
train_data_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)# 4. 打印这个可迭代对象里的数据
for batch in train_data_loader:print("=============================== start ================================")print(type(batch))print(batch)print("===============================  end  ================================")

一个不太寻常的使用用例如下,我们用 DataLoader 来批次化处理内置数据集 SST2

train_iter = SST2(split="train")
dataloader = DataLoader(train_iter, batch_size=8, shuffle=False, collate_fn=collate_batch
)

经过验证,这里的 dataloader 中的每一项都是 tuple 类型


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LEETCODE 100255. 成为 K 特殊字符串需要删除的最少字符数

整体思路: 1.可以看到这道题是要求是最小的,那么可以想到遍历所有情况 2.把题干已知条件转换为一个数组,那么只需要以数组每个元素为开头遍历所有情况即可。 3.对于一个数考虑其后面的情况,其后每个数等于这个数k和数本身的最小值(遍历累计求…

spring boot 运行mongodb sql

因项目数据放到了Mongodb 中,需在Mongodb 中查询数据,网上找了好久总算找到了实现方式 借用本地命令号读取命令行数据 主要是分2步: 1、下载 sql-to-mongo-db-query-converter 这个是一个3放插件 作用是将sql语句转成 Mongodb shell 语句…

2024数据结构面试常见问题

大家好!今天我要和大家分享的是2024年数据结构面试常见问题。无论你是编程新手,还是有一定基础的开发者,掌握这些数据结构面试问题,都将助你在面试中脱颖而出,赢得心仪的offer。 下面,我们就一起来学习这些…

参数高效微调(PEFT)技术概览

参数高效微调(PEFT)技术概览 在大型语言模型(LLMs)的世界里,参数量庞大,通常在70亿至700亿之间。这些模型的自监着训练成本高昂,对公司可能意味着高达1亿美元的支出。而对于资源相对有限的研究…

rlwrap安装

引言 我们在使用sqlplus对oracle数据库进行操作的时候,难免会出现这样一种情况:写完一长串命令后发现中间有书写错误的地方,这个时候如果我们想移动光标去修正错误的地方,会出现类似如下的现象: SQL> select name…

python的封装应用

封装在Python中有许多应用场景,其中一些主要的应用包括: 隐藏实现细节: 通过将数据和实现细节封装在类内部,可以隐藏对象的内部状态和实现细节,从而提高代码的安全性和可维护性。 class BankAccount: def __init…

Codeforces Round 934 (Div. 2) --- C. MEX Game 1 --- 题解

C. MEX Game 1: 题目大意: 思路解析: 重要的是那种只有一个的数字,因为如果这个数字有两个及以上,那么我可以再鲍勃删除之后,再拿,也一定能拿得到,所以瓶颈是只有一个的数字&#x…

爬虫3_爬取翻页URL不变的网站

之前实现了对大学排数据爬取:爬虫2_2019年549所中国大学排名. 近期复现代码,发现原网站升级,在翻页时,发现URL不改变,修改代码,使用网页自动化工具selenium实现对该类网站数据获取。 #-*- coding: UTF-8 -…

活动图高阶讲解-06

31 00:01:52,300 --> 00:02:04,300 刚才讲了,活动里面是动作 32 00:02:04,300 --> 00:02:06,300 这个动作 33 00:02:06,300 --> 00:02:09,300 就可以看作活动的一个 34 00:02:09,300 --> 00:02:13,300 里面的实现的一个行为了 35 00:02:16,300 --&g…

复制word文档,合并word文档

背景 现在有一个需求,需要将多个word文档合并为一个文档,并使用poi-el渲染模板生成一个新的文档。 在网上找了很多,没找到合适的,最后摸索出一个可行方案,基于XWPFDocument.getBodyElements方法的。 其实一开始考虑过…

vue项目跳转html页面

1. 把html页面以及相关文件放到public文件夹下(目的和index.html同级) 2.在vue项目中正常写跳转事件,只是路径写法需要注意

【理解指针(三)】

文章目录 一、数组名的理解(1)数组的地址与数组首元素地址的区别 二、使用指针访问数组(1)一维数组传参的本质 三、冒泡排序(1)什么是冒泡排序(2)写冒泡排序 四、结束语 一、数组名的…

堆排序(向下调整法,向上调整法详解)

目录 一、 二叉树的顺序结构 二、 堆的概念及结构 三、数组存储、顺序存储的规律 此处可能会有疑问,左右孩子的父节点计算为什么可以归纳为一个结论了? 四、大小堆解释 五、大小堆的实现(向上和向下调整法) 5.11向上调整法…

Unity Timeline学习笔记(1) - 创建TL和添加动画片段

Timeline在刚出的时候学习了一下,但是因为一些原因一直都没用在工作中使用。 版本也迭代了很久不用都不会用了,抽时间回顾和复习一下,做一个笔记后面可以翻出来看。 创建Timeline 首先我们创建一个场景,放入一个Plane地板&#…

Linux操作系统-08-常用的网络相关命令

1、ping命令 在linux下ping的话会一直ping下去,在windows下的话它会只ping四次就结束, [rootbastion ~]# ping 192.168.0.102 PING 192.168.0.102 (192.168.0.102) 56(84) bytes of data. 64 bytes from 192.168.0.102: icmp_seq1 ttl64 time0.571 ms…

Linux - 线程互斥和互斥锁

文章目录 前言一、为什么要线程互斥原子性 二、互斥锁互斥锁的创建与销毁互斥锁进行互斥 前言 前几节课,我们学习了多线程的基础概念,这节课,我们来对线程互斥和互斥锁的内容进行学习。 一、为什么要线程互斥 首先我们要明白,对…

悲观锁(Pessimistic Locking)是一种数据库锁定机制

悲观锁(Pessimistic Locking)是一种数据库锁定机制,用于防止多个事务同时修改同一数据记录。以下是关于悲观锁的一些详细信息: 锁定数据:当事务对一条记录进行操作时,悲观锁会阻止其他事务对这条记录进行修…

Matplotlib数据可视化实战-1数据可视化Matplotlib基础

1.1绘图的一般过程: 1.导入相关库 2.生成、读入或计算得到数据; 3.根据需要绘制折线图、散点图、柱状图、饼状图、雷达图、箱线图、三维曲线/曲面以及极坐标系图形; 4.根据需要设置图形属性; 5.显示或保存绘图结果。 例如&…

为什么JDK1.9要允许接口定义私有方法呢?

为什么JDK1.9要允许接口定义私有方法呢? 因为我们说接口是规范,规范是需要公开让大家遵守的。** 私有方法:因为有了默认方法和静态方法这样具有具体实现的方法,那么就可能出现多个方法有共同的代码可以抽取,而这些共…

c语言大小写字母的转换

通过ascll码表我们可以知道大写字母与小写字母相差32个数&#xff08;小写字母比大写字母大&#xff09;。因此&#xff0c;通过相加减32即可转换大小写字母。 #include <stdio.h>int main() {char ch c;char CH A;printf("%c\n", ch - 32);printf("%c…