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()

@浙大疏锦行

相关推荐
老歌老听老掉牙25 分钟前
Python星号参数深度解析
python·参数·星号
2401_884563241 小时前
Python Lambda(匿名函数):简洁之道
jvm·数据库·python
kishu_iOS&AI2 小时前
Python - 链表浅析
开发语言·python·链表
大连好光景2 小时前
conda管理包还是pip管理包
python·conda·pip
m0_730115112 小时前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
FreakStudio2 小时前
MicroPython+PycoClaw,3 分钟搞定 ESP32 跑上 OpenClaw!
python·单片机·嵌入式·电子diy
罗罗攀3 小时前
PyTorch学习笔记|张量的广播和科学运算
人工智能·pytorch·笔记·python·学习
傻啦嘿哟3 小时前
Python 操作 Excel 条件格式指南
开发语言·python·excel
2301_807367193 小时前
Python日志记录(Logging)最佳实践
jvm·数据库·python