当前位置: 首页 > news >正文

【DataLoader的使用】

一、Dataset与DataLoader

  • Pytorch中的 torch.utils.data 提供了两个抽象类:Dataset 和 Dataloader。Dataset 允许你自定义自己的数据集,用来存储样本及其对应的标签。而 Dataloader 则是在 Dataset 的基础上将其包装为一个可迭代对象,以便我们更方便地(小批量)访问数据集。
  • 通俗来讲,如果说有一家包子店,Dataset负责处理每个包子,什么馅料的,大包子还是小包子。而DataLoader就是相当于服务员,它只负责怎么拿包子,送给客人,不需要关心怎么做包子。
  • 在这里插入图片描述

二、实战

  • 引入必要库
import torchvision
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
from torch.utils.data import DataLoader
  • 数据预处理
data_transform = transforms.Compose([
transforms.Resize((256,256)),
transforms.ToTensor()
])

统一图像尺寸(不然会报错),把PIL格式转为张量

  • 创建ImageFolder数据集实例
test_set=torchvision.datasets.ImageFolder(
root=r'D:/My_Work/StudyDeepLearning/day3_code/dataset/test',
transform=data_transform)

指定数据集根目录路径,应用上面的数据转换

  • 创建DataLoader实例
test_loader=DataLoader(
test_set,
batch_size=32,
shuffle=True,
num_workers=0,
drop_last=False)
  1. dataset:指定加载的数据集对象,包含所有样本和标签。
  2. batch_size:设置每批次加载的样本数(如32),影响内存使用和训练效率。
  3. shuffle:是否打乱数据顺序(训练建议True,测试建议False)。
  4. num_workers:数据加载子进程数(0为主进程,多核可设4-8加速加载)。
  5. drop_last:是否丢弃末尾不足batch_size的批次(False保留,True丢弃)。
  6. pin_memory(可选):锁页内存加速GPU传输(GPU训练时建议True)。
  7. persistent_workers(可选):保持子进程存活,减少重复初始化开销(PyTorch 1.7+)。
  • 放到tensorboard测试查看
#取测试集中第一张图片以及label
img,label=test_set[0]
print(img.shape)
print(label)writer=SummaryWriter("dataloader")
for epoch in range(2):step=0for data in test_loader:imgs,labels=datawriter.add_images("Epoch:{}".format(epoch),imgs,step)step+=1
writer.close()

在这里插入图片描述

http://www.dtcms.com/a/278085.html

相关文章:

  • 力扣 hot100 Day43
  • Actor-Critic重要性采样原理
  • java valueOf方法
  • 【算法】贪心算法入门
  • SwiftUI 7 新 WebView:金蛇出洞,网页江湖换新天
  • 一些git命令
  • 若依框架集成阿里云OSS实现文件上传优化
  • 对于muduo我自己的理解
  • UniHttp生命周期钩子与公共参数实战:打造智能天气接口客户端
  • flask校园学科竞赛管理系统-计算机毕业设计源码12876
  • SPSSPRO:数据分析市场SaaS挑战者的战略分析
  • JAVA并发——什么是AQS?
  • Mapbox GL初探
  • 【unitrix】 5.0 第二套类型级二进制数基本结构体(types2.rs)
  • 16.使用ResNet网络进行Fashion-Mnist分类
  • css如何同时给元素设置背景和背景图?
  • 每日算法刷题Day47:7.13:leetcode 复习完滑动窗口一章,用时2h30min
  • 说实话,统计分析用Python这5个第三方库就够了
  • AutoLabor-ROS-Python 学习记录——第一章 ROS概述与环境搭建
  • PortsSwiggerLab: SSRF with blacklist-based input filter
  • JS进阶-day1 作用域解构箭头函数
  • Spring AI 项目实战(十六):Spring Boot + AI + 通义万相图像生成工具全栈项目实战(附完整源码)
  • NO.5数据结构串和KMP算法|字符串匹配|主串与模式串|KMP|失配分析|next表
  • pthread_mutex_unlock函数的概念和用法
  • 大规模电商系统分库分表实战经验分享
  • NFSV4锁机制(三)
  • 编程技术杂谈2.0
  • DVWA靶场通关笔记-XSS DOM(High级别)
  • 垃圾收集器-Serial Old
  • CVE-2022-0609