Pytorch torch.utils.data.DataLoader 用法详细介绍

2024-04-04 18:04

本文主要是介绍Pytorch torch.utils.data.DataLoader 用法详细介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 介绍
  • 2. 参数详解
  • 3. 用法
  • 4. 参考


1. 介绍

torch.utils.data.DataLoader 是 PyTorch 提供的一个用于数据加载的工具类,用于批量加载数据并为模型提供输入。它可以将数据集包装成一个可迭代的对象,方便地进行数据加载和批处理操作。Pytorch DataLoader 的详细官方介绍看这里

2. 参数详解

  • dataset (Dataset) – 加载的数据集

  • batch_size (int, optional) – 每一次处理加载多少数据

  • shuffle (bool, optional) – True 表示每次 epoch 都要重新打乱数据,默认 False

  • sampler (Sampler or Iterable, optional) – 定义采样的策略。如果定义了此参数,那么 shuffle 参数必须为 False

  • batch_sampler (Sampler or Iterable, optional) – 同 sample 一样,但每次返回数据的索引。与 batch_sizeshufflesampledrop_last 参数互斥

  • num_workers (int, optional) – 指定用于数据加载的子进程数,可以加快数据加载速度。默认0,表示用主进程加载

  • collate_fn (Callable, optional) – 批处理函数,用于将多个样本合并成一个批次,例如将多个张量拼接在一起,构建 mini-batch。当使用 map-style 数据集进行批量加载时使用。

  • pin_memory (bool, optional) – True 表示在返回张量之前将张量复制到 CUDA 固定的内存中,加快 GPU 传输速度

  • drop_last (bool, optional) – True 表示可删除最后一个不完整的批次。默认 False,如果数据集的大小不能被批次大小整除,则最后一个批次会更小。

  • timeout (numeric, optional) – 非负数,worker 收集批次数据的超时时间,默认0

  • worker_init_fn (Callable, optional) – 如果非None,则在种子设定之后和数据加载之前,将以worker id([0,num_workers-1]中的int)作为输入对每个 worker 子进程调用此函数。(默认值:None)

  • multiprocessing_context (str or multiprocessing.context.BaseContext, optional) – 如果为None,则将使用操作系统的默认多处理上下文。(默认值:None)

  • generator (torch.Generator, optional) – 如果非None,则RandomSampler 将使用此RNG来生成随机索引,并进行多进程处理以为 workers 生成 base_seed。(默认值:None)

  • prefetch_factor (int, optional, keyword-only arg) – 每个 worker 预先装载的批次数。2 表示在所有工作线程中总共预取2*num_workers批次。(默认值取决于为num_workers设置的值。如果num_workers=0的值,则默认为None。否则,如果num_workers>0的值,默认为2)

  • persistent_workers (bool, optional) – True 表示不会在数据集使用一次后关闭工作进程。这允许保持 worker 实例处于活动状态。(默认值:False)

  • pin_memory_device (str, optional) – 如果 pin_memory 为 True,该参数表示 pin_memory 所指向的设备

3. 用法

使用 DataLoader 进行迭代

import torch
from torch.utils.data import Dataset, DataLoader
# 假设有自定义数据集类 MyDataset
class MyDataset(Dataset):# 实现 __init__, __len__, 和 __getitem__ 方法...# 实例化数据集
dataset = MyDataset(data_source)# 创建 DataLoader
dataloader = DataLoader(dataset,batch_size=64,  # 设置批次大小shuffle=True,   # 是否随机打乱数据num_workers=4,  # 启用4个工作进程加载数据drop_last=True  # 丢弃最后一个不足批次大小的数据)# 迭代数据加载器进行训练
for epoch in range(num_epochs):for inputs, labels in dataloader:# 训练模型...outputs = model(inputs)loss = compute_loss(outputs, labels)optimizer.zero_grad()loss.backward()optimizer.step()

在迭代过程中,loader 会自动从数据集中加载数据,并将其组织成批次。每次迭代返回一个批次的数据,其中 batch_data 是一个包含输入数据和标签的元组或列表。

4. 参考

https://pytorch.org/tutorials/beginner/basics/data_tutorial.html

这篇关于Pytorch torch.utils.data.DataLoader 用法详细介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/876476

相关文章

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方