Day42Dataset和Dataloader

1. Dataset 类:"存数据的容器"

你可以把它理解成一个数据盒子,里面装着你的数据集(比如图片、标签)。要让这个 "盒子" 能用,得给它加两个 "功能按钮"(Python 的特殊方法):

  • __getitem__(self, idx):按索引 idx 取数据(比如 dataset[0] 就能拿到第 1 个样本)。
  • __len__(self):返回数据集的总样本数(比如 len(dataset) 知道一共有多少数据)。

2. DataLoader 类:"给模型端菜的服务员"

Dataset 是 "装菜的盘子",DataLoader 就是 "把菜分成小份、端给模型吃" 的人。它的作用是:

  • Dataset 里的数据分成批次(比如一次给模型喂 32 个样本,而不是全塞进去)。
  • 支持打乱数据(避免模型学 "顺序" 而不是 "规律")。
  • 支持多线程加载(加快数据读取速度)。

3. MNIST 手写数据集

这是一个 "手写数字图片集",里面是 0-9 的手写数字(每张图是 28x28 的黑白色),是深度学习入门常用的 "练习数据集"。

作业:获取 CIFAR 数据集的一张图片

复制代码
import torch
from torchvision import datasets, transforms
import matplotlib.pyplot as plt

# 1. 加载CIFAR数据集(自动下载到本地)
transform = transforms.ToTensor()  # 把图片转成PyTorch能处理的格式
cifar_dataset = datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)

# 2. 取第1张图和它的标签
img, label = cifar_dataset[0]  # 用Dataset的__getitem__取数据

# 3. 显示图片
plt.imshow(img.permute(1, 2, 0))  # 调整格式(PyTorch是[通道,高,宽],plt需要[高,宽,通道])
plt.title(f"Label: {label}")  # 显示标签(CIFAR10的标签是0-9,对应不同类别)
plt.show()

@浙大疏锦行

相关推荐
喵手11 分钟前
Python爬虫实战:京东/淘宝搜索多页爬虫实战 - 从反爬对抗到数据入库的完整工程化方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·京东淘宝页面数据采集·反爬对抗到数据入库·采集结果csv导出
B站_计算机毕业设计之家28 分钟前
猫眼电影数据可视化与智能分析平台 | Python Flask框架 Echarts 推荐算法 爬虫 大数据 毕业设计源码
python·机器学习·信息可视化·flask·毕业设计·echarts·推荐算法
PPPPPaPeR.32 分钟前
光学算法实战:深度解析镜片厚度对前后表面折射/反射的影响(纯Python实现)
开发语言·python·数码相机·算法
JaydenAI36 分钟前
[拆解LangChain执行引擎] ManagedValue——一种特殊的只读虚拟通道
python·langchain
骇城迷影40 分钟前
Makemore 核心面试题大汇总
人工智能·pytorch·python·深度学习·线性回归
长安牧笛43 分钟前
反传统学习APP,摒弃固定课程顺序,根据用户做题正确性,学习速度,动态调整课程难度,比如某知识点学不会,自动推荐基础讲解和练习题,学习后再进阶,不搞一刀切。
python·编程语言
码界筑梦坊1 小时前
330-基于Python的社交媒体舆情监控系统
python·mysql·信息可视化·数据分析·django·毕业设计·echarts
森焱森1 小时前
详解 Spring Boot、Flask、Nginx、Redis、MySQL 的关系与协作
spring boot·redis·python·nginx·flask
he___H1 小时前
双色球红球
python