【学习】pytorch框架的数据管理—— 理解Dataloader

2024-03-10 22:20

本文主要是介绍【学习】pytorch框架的数据管理—— 理解Dataloader,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考:https://spite-triangle.github.io/artificial_intelligence/#/./README

1.标准数据集

使用:以 CIFAR10 数据集为例,其他数据集类似。

# root:数据存放路径
# train:区分训练集,还是测试集
# transform:对数据集中的图进行预处理
# target_transfrom:对期望输出进行预处理
# download:从网上直接下载数据集
torchvision.datasets.CIFAR10(root: str, train: bool=True, transform=None, target_transform=None, download=False)

2. 自定义数据集

常用的文件路径操作:

rootPath = '..\\asset'
path = '..\\asset\\cat.jpeg'
# 测试路径
os.path.exists(rootPath)
# 文件类型判断
os.path.isfile(path)
os.path.islink(path)
os.path.isdir(path)
# 获取绝对路径 
os.path.abspath(rootPath)
# 罗列出文件夹下的所有文件名
os.listdir(rootPath)
# 路径拼接
os.path.join(rootPath,'cat.jpeg')

数据集:

 class ImgaeAssets(torch.utils.data.Dataset):""" 自定义数据集类 """def __init__(self,path):self.root = pathself.files = os.listdir(path)passdef __getitem__(self,id):""" 用于数据集中的样本获取 """filePath = os.path.join(self.root,self.files[id])img = Image.open(filePath)return imgdef __len__(self):""" 数据的数量 """return len(self.files)# 创建数据集assets = ImgaeAssets('../asset')# 获取数据img = assets[0]img.show()

##重点 Dataloader

  • 作用: 控制数据集 dataSets 的获取

在这里插入图片描述
用 dataloader 将 dataset 中的数据取出打包成 batch 的过程中,会通过 sampler 从 dataset 中取出 batch_size 个样本,然后通过 collect function 将取出的样本整理并打包成最终的 batch。

sampler 获取从 dataset 中获取样本,首先通过 len 获取总样本数,然后根据总样本数生成索引序列(数组的索引号),最后根据索引号通过 getitem 加载真正的样本数据(dataset 只预先加载了数据的文件路径,真正的文件并没直接加载)。

通过 sampler 获取到的数据样本,其实是一个「tuple(tensor) 类型数组」,并非真正的一个 tensor。将 tensor 数组最终整合成一个 tensor 就需要通过 dataset 的 collect function 实现。

# dataset:设置数据集
# batch_size:一个 batch 包含多少样本
# shuffle:下一次 epoch 是否需要将数据打乱,再划分 batch
# drop_last:当最后一个 batch 不具有 batch_size 个样本时,是否需要舍弃
# num_workers:线程数
# collate_fn:自定义 collate_fn
# sampler:自定义采集
torch.utils.data.DataLoader(dataset,batch_size,shuffle=False,drop_last=False,num_workers=0,worker_init_fn,collate_fn,sampler)

这篇关于【学习】pytorch框架的数据管理—— 理解Dataloader的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

深入理解go中interface机制

《深入理解go中interface机制》本文主要介绍了深入理解go中interface机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前言interface使用类型判断总结前言go的interface是一组method的集合,不

PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例

《PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例》词嵌入解决NLP维度灾难,捕捉语义关系,PyTorch的nn.Embedding模块提供灵活实现,支持参数配置、预训练及变长... 目录一、词嵌入(Word Embedding)简介为什么需要词嵌入?二、PyTorch中的nn.Em

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

Java Spring的依赖注入理解及@Autowired用法示例详解

《JavaSpring的依赖注入理解及@Autowired用法示例详解》文章介绍了Spring依赖注入(DI)的概念、三种实现方式(构造器、Setter、字段注入),区分了@Autowired(注入... 目录一、什么是依赖注入(DI)?1. 定义2. 举个例子二、依赖注入的几种方式1. 构造器注入(Con

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语