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

Dataset类案例 小土堆Pytorch入门视频记录

最近学完了python基础,过了遍机器学习理论基础和深度学习神经网络的部分,开始看小土堆的视频入门torch,简单记录下。

核心知识点

1. Dataset 的基本概念

  • Dataset 是 PyTorch 提供的一个抽象类,用于表示数据集

  • 自定义数据集需要继承 torch.utils.data.Dataset 类

  • 必须实现三个方法:__init____getitem____len__

2. 自定义 Dataset 的实现

from torch.utils.data import Dataset
from PIL import Image
import osclass MyData(Dataset):def __init__(self, root_dir, label_dir):self.root_dir = root_dir  # 数据集根目录self.label_dir = label_dir  # 类别标签目录self.path = os.path.join(root_dir, label_dir)  # 拼接完整路径self.img_path = os.listdir(self.path)  # 获取所有图片文件名def __getitem__(self, idx):img_name = self.img_path[idx]  # 获取指定索引的图片名img_item_path = os.path.join(self.root_dir, self.label_dir, img_name)img = Image.open(img_item_path)  # 读取图片label = self.label_dir  # 获取标签return img, label  # 返回图片和标签def __len__(self):return len(self.img_path)  # 返回数据集大小root_dir = "dataset/train"
# 创建蚂蚁数据集
ants_label_dir = "ants"
ants_dataset = MyData(root_dir, ants_label_dir)
# 创建蜜蜂数据集
bees_label_dir = "bees"
bees_dataset = MyData(root_dir, bees_label_dir)
# 合并数据集(简单示例)
train_dataset = ants_dataset + bees_dataset

在pycharm的python console中逐块运行可以更好的看到各元素的类型

  • __init__: 初始化,设置路径和加载文件列表

  • __getitem__: 根据索引返回单个数据样本(图片+标签)

  • __len__: 返回数据集大小

掌握 Dataset 的使用是 PyTorch 数据处理的基础,后续的 DataLoader 和模型训练都依赖于良好的数据集实现。

http://www.lryc.cn/news/618473.html

相关文章:

  • 【Vue.js】生产设备规划工具(报价单Word文档生成)【开发全流程】
  • [TryHackMe]Internal(hydra爆破+WordPress主题修改getshell+Chisel内网穿透)
  • 在Colab上复现LoRA相关论文实验的完整指南
  • 嵌入式硬件中CD4013芯片控制与实现
  • linux Phy驱动开发之mido总线介绍
  • Spark on K8s 在vivo大数据平台的混部实战
  • GitLab CI + Docker 自动构建前端项目并部署 — 完整流程文档
  • 【数据结构】并查集:从入门到精通
  • nextTick和setTimeout的区别
  • 卓伊凡谈AI编程:历史、现状与未来展望-以前面向搜索引擎现在面向AI机器人-优雅草卓伊凡
  • IMU量程介绍
  • 悬空标记攻击 -- idekctf 2025 CTFinder
  • [激光原理与应用-255]:理论 - 几何光学 - CCD成像过程
  • 2025牛客暑期多校训练营3(FDJAEHB)
  • 3.8 vue2 devServer配置和 CDN 加载外部资源
  • JavaScript 实现模块懒加载的几种方式
  • Flink Redis维表:Broadcast Join与Lookup Join对比及SQL示例
  • nvm install 14.21.3 时npm 无法下载和识别
  • code-inspector-plugin插件
  • npm、pnpm、yarn区别
  • 【Linux系统】详解Ext2,文件系统
  • RabbitMQ-知识技能图谱(总结篇)
  • 智能家居Agent:物联网设备的统一控制与管理
  • 算法打卡力扣第88题:合并两个有序数组(easy)
  • 第五章 树与二叉树
  • 虚拟机高级玩法-网页也能运行虚拟机——WebAssembly
  • Day24|学习前端CSS
  • AI入门学习--AI模型评测
  • Java集合学习之forEach()遍历方法的底层原理
  • 深度解读 WizTelemetry 2.0:链路追踪如何让分布式系统“无所遁形”