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

@浙大疏锦行

相关推荐
鹿鹿学长12 分钟前
微软把语音转写打到 0.1 美元/小时:5 个月降价 72%,AI 音频进入地板价时代
python·自动化
weixin_4407305013 分钟前
使用pytest中方法控制执行步骤(test_begin.py、test_end.py,@pytest.mark.run(order=1))
开发语言·python·pytest
小柯南敲键盘23 分钟前
跨境电商批量图片翻译与视频字幕翻译,就用跨马AI工具
大数据·人工智能·python·音视频
心易行者1 小时前
Python自动化测试7步落地法:用python在线运行省掉90%环境配置时间
java·开发语言·人工智能·python·log4j·ai编程
Boop_wu1 小时前
[LangGraph] 案例 2 : 支持搜索的智能代理系统
服务器·windows·python·langchain
2601_962297251 小时前
Python、Pytest、Allure、Selenium和Jenkins实现自动化测试集成实例
python·selenium·jenkins·pytest·allure
今天AI了吗2 小时前
Codex 配置自定义 AI API 完整指南:从零到一接入你的专属模型
java·人工智能·python·数据分析·embedding
阿童木写作2 小时前
跨境电商批量图片翻译与视频字幕翻译工具推荐
python·音视频
leihefeng2 小时前
手写数字识别:KNN vs 逻辑回归实战
python·算法·机器学习·逻辑回归·scikit-learn
SunnyDays10112 小时前
如何使用 Python 从 Word 文档中提取图片
python·word