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

news/2024/4/21 0:10:48/

特别注意: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.ppmy.cn/news/1385066.html

相关文章

unity 获取Dctionary的第k个元素的键值

在Unity中&#xff0c;如果你想从一个Dictionary<TKey, TValue>中获取第一个键值对&#xff0c;你需要注意Dictionary本身并不保证元素的顺序。然而&#xff0c;你可以使用Dictionary的First()或FirstOrDefault()方法&#xff08;这两个方法需要System.Linq命名空间的支持…

数据分析实战-Python实现博客评论数据的情感分析

数据分析实战-Python实现博客评论数据的情感分析 学习建议SnowNLP基础什么是SnowNLP&#xff1f;SnowNLP情感分析 SnowNLP使用SnowNLP安装情感分析中文分词关键词提取拼音、词性标准 SnowNLP实战-博客评论数据的情感分析数据准备数据获取数据分析 总结 学习建议 现在很多网站、…

《JAVA与模式》之简单工厂模式

系列文章目录 文章目录 系列文章目录前言一、简单工厂模式二、简单工厂模式的优缺点前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 在阎宏博士的《JAVA与模式》一…

俄罗斯人最常用的9种道别用语,柯桥零基础俄语培训

1、Пока、Пока пока&#xff5e;&#xff1a;类似中文里的"拜拜"&#xff0c;一般用于非正式场合下对比较熟络的朋友同学等 例&#xff1a; Я ухожу, пока! 我走啦&#xff0c;回头见&#xff01; Пока! Давай прощаться, и…

3.11笔记3

3.11知识点3 1. break 语句和 continue 语句有什么区别&#xff1f;2. 使用 goto 计算 1-23-4......99-100 的值。3. 输入一个整数&#xff0c;判断这个数是不是素数。4. 写程序生成前 100 个素数。56. (a) 对于一个大小为N的数组&#xff0c;它的下标范围是多少&#xff1f;7.…

pycharm安装jupyter

pycharm安装jupyter 文章目录 pycharm安装jupyter 创建新环境rag&#xff0c;python设置为3.8&#xff1a; conda create -n rag python3.8激活conda的rag环境&#xff1a; source activate rag安装jupyter&#xff1a; conda install jupyter利用conda list可以查看conda环…

数据分析-Pandas如何观测数据的中心趋势度

数据分析-Pandas如何观测数据的中心趋势度 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff1f; 数据…

广度优先算法(一篇文章讲透)

目录 引言 一、算法概述 二、算法步骤 1 初始化 2 循环处理 三、算法应用 1 图的最短路径问题 2 网络爬虫 3 社交网络分析 4 游戏路径搜索 事例 四、算法特点与性能 五、性能优化 1 剪枝策略&#xff1a; 2 使用高效的数据结构&#xff1a; 3 并行化处理&#…

智慧城市与数字经济:共创城市新价值

随着科技的快速发展&#xff0c;智慧城市与数字经济已成为推动城市现代化进程的重要引擎。它们不仅提升了城市治理的效率和公共服务水平&#xff0c;还为城市经济发展注入了新的活力。本文旨在探讨智慧城市与数字经济如何共同创造城市新价值&#xff0c;并分析其面临的挑战与发…

java线程池基础

目录 一、线程池基础概念1.1 什么是线程池&#xff1f;1.2 为什么要用线程池&#xff1f;1.3 线程池的工作原理 二、java中的线程池2.1 线程池真正实现类 ThreadPoolExecutor 2.1.2 构造器2.1.3 参数2.1.3.1 workQueue2.1.3.2 threadFactory2.1.3.3 handler 2.2 线程池的使用2.…

阿里云数据盘挂载目录

1、先登录服务器创建新目录aaa 2、云盘都快照备份下。后续操作完核实无误了&#xff0c;您根据您需求删除快照就行&#xff0c; 然后登录服务器内执行&#xff1a; fdisk -l lsblk blkid ll /aaa 3、执行&#xff1a;&#xff08;以下命令是进行数据盘做ext4文件系统并挂载到…

面试经典-MySQL篇

一、MySQL组成 MySQL数据库的连接池&#xff1a;由一个线程来监听一个连接上请求以及读取请求数据&#xff0c;解析出来一条我们发送过去的SQL语句SQL接口&#xff1a;负责处理接收到的SQL语句查询解析器&#xff1a;让MySQL能看懂SQL语句查询优化器&#xff1a;选择最优的查询…

泰勒级数、海森矩阵、雅可比矩阵

泰勒级数 一元泰勒级数展开说明 多元泰勒级数展开说明 海森矩阵 海森矩阵说明 雅可比矩阵 雅可比矩阵说明

力扣爆刷第95天之hot100五连刷61-65

力扣爆刷第95天之hot100五连刷61-65 文章目录 力扣爆刷第95天之hot100五连刷61-65一、131. 分割回文串二、51. N 皇后三、35. 搜索插入位置四、74. 搜索二维矩阵五、34. 在排序数组中查找元素的第一个和最后一个位置 一、131. 分割回文串 题目链接&#xff1a;https://leetcod…

maven打包把所有依赖的jar copy到一个文件夹

在maven项目中&#xff0c;是使用依赖坐标来引入jar包&#xff0c;在引入jar包的时候&#xff0c;maven也会默默的帮助我们导入这个jar包所依赖的jar包。 但是当我们打包项目使用jar包运行的时候&#xff0c;往往会出现缺少jar的情况&#xff1a; 如果我们一个一个添加缺少的…

Tiktok在线网页版和Tiktok安卓解锁版教程(Tiktok免登录国内直接看)

TikTok和抖音作为众所周知的一对兄弟&#xff0c;所开创的市场前景不可估量。它们不仅颠覆了很多传统认知&#xff0c;也直接让更多人接受了这些新奇事物。然而&#xff0c;TikTok的版本受限于国外&#xff0c;需要特定网络环境&#xff0c;一旦识别为国内&#xff0c;将无法使…

Qt是什么?

Qt是一款跨平台的GUI&#xff08;图形用户界面&#xff09;开发工具&#xff0c;最初由开源社区创建&#xff0c;并被挪威公司Trolltech收购&#xff0c;现在由芬兰公司The Qt Company负责开发和维护。Qt提供了丰富的图形界面控件和强大的功能库&#xff0c;可以用于开发桌面应…

关于k8s中 storageclass 的 is-default-sc 默认存储设置

为什么要改变默认存储类&#xff1f; 取决于安装模式&#xff0c;你的 Kubernetes 集群可能和一个被标记为默认的已有 StorageClass 一起部署。 这个默认的 StorageClass 以后将被用于动态的为没有特定存储类需求的 PersistentVolumeClaims 配置存储。更多细节请查看 Persiste…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:ListItemGroup)

该组件用来展示列表item分组&#xff0c;宽度默认充满List组件&#xff0c;必须配合List组件来使用。 说明&#xff1a; 该组件从API Version 9开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。该组件的父组件只能是List。 使用说明 当List…

Android中多线程实现

Android中多线程主要有三种实现方式&#xff1a;通过Thread类、AsyncTask或者RxJava。 1. 通过Thread类 我们使用Thread类时&#xff0c;可以创建Thread的子类并重写其run方法&#xff0c; 或者自定义一个实现Runable协议的类&#xff0c;然后将其与Thread进行绑定。将线程间数…