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

【PyTorch】PyTorch中的数据预处理操作

PyTorch深度学习总结

第十二章 PyTorch中的数据预处理操作


文章目录

  • PyTorch深度学习总结
  • 前言
  • 一、`torch.utils.data` 模块
    • 1. 核心组件
    • 2.常用工具类
    • 3. 数据采样器
  • 二、常用函数


前言

上文介绍了PyTorch中torch.nn模块的全连接层,本文将介绍PyTorch中torch.utils.data 模块的数据处理操作:


一、torch.utils.data 模块

torch.utils.dataPyTorch 中用于数据处理和加载的重要模块,它提供了一系列工具和类,方便用户对数据集进行管理和操作。以下是对该模块的详细介绍:

1. 核心组件

1.1 Dataset 类

  • 作用Dataset 类是一个抽象基类,用于表示数据集。用户需要继承这个类并实现 __len____getitem__ 方法,以定义数据集的长度和如何获取数据集中的单个样本。
  • 示例
import torch
from torch.utils.data import Datasetclass MyDataset(Dataset):def __init__(self, data):self.data = datadef __len__(self):return len(self.data)def __getitem__(self, idx):return self.data[idx]data = [1, 2, 3, 4, 5]
dataset = MyDataset(data)
print(len(dataset))  
print(dataset[2])    
  • 解释:在这个示例中,我们创建了一个自定义的数据集类 MyDataset,它接受一个列表作为数据。__len__ 方法返回数据集的长度,__getitem__ 方法根据索引返回数据集中的单个样本。

1.2 DataLoader 类

  • 作用DataLoader 类用于将数据集封装成一个可迭代的对象,支持批量加载数据、打乱数据顺序、多线程加载等功能,方便在训练模型时使用。
  • 示例
from torch.utils.data import DataLoaderdataloader = DataLoader(dataset, batch_size=2, shuffle=True)
for batch in dataloader:print(batch)
  • 解释:在这个示例中,我们将之前创建的 dataset 封装成一个 DataLoader 对象,设置批量大小为 2,并开启数据打乱功能。然后通过迭代 DataLoader 对象,可以逐批获取数据。

2.常用工具类

2.1 Subset 类

  • 作用Subset 类用于创建数据集的子集,通过指定数据集和索引列表来获取子集中的数据。
  • 示例
from torch.utils.data import Subsetsubset = Subset(dataset, [0, 2, 4])
print(len(subset))  
print(subset[1])    
  • 解释:在这个示例中,我们创建了 dataset 的一个子集 subset,只包含索引为 0、2、4 的样本。

2.2 ConcatDataset 类

  • 作用ConcatDataset 类用于将多个数据集合并成一个数据集。
  • 示例
from torch.utils.data import ConcatDatasetdataset1 = MyDataset([1, 2, 3])
dataset2 = MyDataset([4, 5, 6])
concat_dataset = ConcatDataset([dataset1, dataset2])
print(len(concat_dataset))  
print(concat_dataset[4])    
  • 解释:在这个示例中,我们将两个自定义的数据集 dataset1dataset2 合并成一个新的数据集 concat_dataset

3. 数据采样器

3.1 RandomSampler 类

  • 作用RandomSampler 类用于随机采样数据集中的样本,常用于打乱数据顺序。
  • 示例
from torch.utils.data import RandomSamplersampler = RandomSampler(dataset)
dataloader = DataLoader(dataset, batch_size=2, sampler=sampler)
for batch in dataloader:print(batch)
  • 解释:在这个示例中,我们使用 RandomSampler 类对数据集进行随机采样,然后将采样器传递给 DataLoader 对象,这样在加载数据时会随机获取样本。

3.2 SequentialSampler 类

  • 作用SequentialSampler 类用于按顺序采样数据集中的样本。
  • 示例
from torch.utils.data import SequentialSamplersampler = SequentialSampler(dataset)
dataloader = DataLoader(dataset, batch_size=2, sampler=sampler)
for batch in dataloader:print(batch)
  • 解释:在这个示例中,我们使用 SequentialSampler 类对数据集进行顺序采样,然后将采样器传递给 DataLoader 对象,这样在加载数据时会按顺序获取样本。

二、常用函数

操作函数功能
torch.utils.data.TensorDataset()将数据处理为张量
torch.utils.data.ConcatDataset()连接多个数据集
torch.utils.data.Subset()根据索引获取数据集的子集
torch.utils.data.DataLoader()数据加载器
torch.utils.data.random_split()随机将数据集拆分为给定长度的非重叠新数据集
http://www.dtcms.com/a/272414.html

相关文章:

  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | DoubleVerticalSlider(双垂直滑块)
  • 图解LeetCode:79递归实现单词搜索
  • Django+DRF 实战:自定义异常处理流程
  • 20.4 量子安全加密算法
  • 案例分享--福建洋柄水库大桥智慧桥梁安全监测(二)之数字孪生和系统平台
  • 机器学习13——支持向量机下
  • TCP传输控制层协议深入理解
  • 当CCLinkIE撞上Modbus TCP:照明控制系统的“方言战争”终结术
  • VIP可读
  • 线性回归与正则化
  • Django专家成长路线知识点——AI教你学Django
  • 【PTA数据结构 | C语言版】顺序栈的3个操作
  • 【深度学习系列--经典论文解读】Gradient-Based Learning Applied to Document Recognition
  • LINUX710 MYSQL
  • linux-用户与用户组管理
  • serialVersionUID
  • 配置 msvsmon.exe 以无身份验证启动
  • 力扣打卡第23天 二叉搜索树中的众数
  • 算法题(171):组合型枚举
  • Shusen Wang推荐系统学习 --召回 矩阵补充 双塔模型
  • 深度探索:实时交互与增强现实翻译技术(第六篇)
  • Win10用camke+gcc编译opencv库报错error: ‘_hypot‘ has not been declared in ‘std‘
  • 什么是 领域偏好学习(DPO)与多目标强化学习(PPO)
  • 在 Ubuntu 22 部署 vLLM + Qwen3 32B 模型
  • EPLAN 电气制图(六):电机正反转副勾主电路绘制
  • STM32第十九天 ESP8266-01S和电脑实现串口通信(2)
  • 代理模式——Java
  • 机器学习14——线性回归
  • 前端项目vue3项目集成eslint@9.x跟prettier
  • android TabLayout 标题栏切换 事件拦截