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

Pytorch中预置数据集的加载方式

Pytorch中数据集加载方式

数据类型PyTorch 模块是否预置数据集
图像/视频torchvision.datasets✅ 是
音频torchaudio.datasets✅ 是
文本torchtext.datasets✅ 是(需安装)
自定义数据torch.utils.data❌ 否(需手动实现)
多模态/第三方数据Hugging Face 等✅ 是

深度学习任务中常用数据集来源 

        上表是我们在深度学习任务中常用的数据集来源,这里我们以torchvision为例,来说明预置数据集的加载方式。

torchvision内所有数据集 

torchvision加载数据集模版

CIFER-10数据集

CIFAR-10数据集共有60000个样本,每个样本都是一张32*32像素的RGB图像(彩色图像),每个RGB图像又必定分为3个通道(R通道、G通道、B通道)。这60000个样本被分成了50000个训练样本和10000个测试样本。

Cifer-10数据集概览图(来自官网)

加载数据集

'''
root:数据集在你的电脑上的路径,若download=True,root需设置为 './data'
train:训练集还是测试集,train=True,此时加载的是训练集,train=False,此时加载的是测试集
download:是否下载数据集,倘若你手头上没有数据集又想直接训练模型,那么需要将download设置为True
并且将root设置为',/data',因为预置数据集会默认下载到当前工作区域文件夹下,且名称为data
transform:数据预处理函数
'''
import torchvision
#训练集
trainset=torchvision.datasets.数据集名称(root='./data', train=True, download=True, 
transform=transform_train)
#测试集
testset=torchvision.datasets.数据集名称(root='./data', train=False, download=True, transform=transform_test)

 数据预处理

        torchvision中我们常用transforms模块来对图像数据进行预处理,其中ToTensor()函数是必须要有的(只有将图像数据转换为Tensor才能训练),其余操作可以自行添加,这里我使用了RandomCrop和RandomHorizontalFlip这两个操作

        RandomCrop会将图像随机裁剪为32×32像素,先填充4像素的边界(四周各填充4像素,图像变为40×40),再随机裁剪回32×32。

        RandomHorizontalFlip则是按照50%的概率水平翻转图像。

        经过这两个操作数据的多样性会增强,最后为了加快模型训练速度提升训练进度,一般而言我们都是需要对数据进行标准化处理的,Normalize函数传入的参数为均值mean与方差std

        这里,我们的数据是32x32的jpg图像,有三个通道,因此均值与方差都是三元组,这里的均值与方差的数据是CIFAR-10数据集的统计值。

DataLoder加载数据

        DataLoder用于高效加载和预处理数据,并将其批量提供给模型进行训练或推理。 

from torch.utils.data import DataLoader
'''
dataset:数据集,经过torchvision.datasets.数据集名称()后的训练集或数据集
batch_size:每个批次的样本数。
shuffle:是否是否在每个epoch开始时打乱数据顺序。
num_workers:用于数据加载的子进程数(多进程加速)。可以设置为CPU核心数-1(如4或8)
'''
trainloader=DataLoader(dataset=trainset, batch_size=128, shuffle=True, num_workers=8)
testloader=DataLoader(dataset=testset, batch_size=100, shuffle=False, num_workers=8)

 完整代码

import torchvision
import torchvision.transforms as transforms
from torch.utils.data import DataLoader
'''数据预处理'''
transform_train=transforms.Compose([transforms.RandomCrop(32, padding=4),transforms.RandomHorizontalFlip(),transforms.ToTensor(),transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)),
])
transform_test=transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)),
])
'''加载CIFAR-10数据集'''
################################################################
#训练集
trainset=torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform_train)
trainloader=DataLoader(trainset, batch_size=128, shuffle=True, num_workers=2)
################################################################################
#测试集
testset=torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=transform_test)
testloader=DataLoader(testset, batch_size=100, shuffle=False, num_workers=2)
##############################################################################


http://www.mrgr.cn/news/97004.html

相关文章:

  • 数据结构学习
  • 大模型学习二:DeepSeek R1+蒸馏模型组本地部署与调用
  • 【MyBatis】深入解析 MyBatis:关于注解和 XML 的 MyBatis 开发方案下字段名不一致的的查询映射解决方案
  • 操作系统(二):实时系统介绍与实例分析
  • python match case语法
  • Vue3 Pinia Store 新建store示例、使用store示例
  • 【大模型】SpringBoot整合LangChain4j实现RAG检索实战详解
  • ros2--gazebo--launch
  • 【gdutthesis模板】章节标题有英文解决方案
  • Tmux 核心操作速查指南
  • 【c++深入系列】:类与对象详解(中)
  • STM32单片机入门学习——第12节: [5-2]对射式红外传感器计次旋转编码器计次
  • 基于yolo11的BGA图像目标检测
  • 动、静态创建任务
  • MySQL - 事务隔离级别和锁的机制
  • WPF设计学习记录滴滴滴4
  • 基础科学中的人工智能︱如何用机器学习方法求解排列型组合优化问题?
  • 【11408学习记录】[特殊字符] 三步攻克英语长难句:嵌套结构×平行结构全解析
  • frp 让服务器远程调用本地的服务(比如你的java 8080项目)
  • CExercise04_2数组_1 利率在投资年份内每年的资产总价值