FashionMNIST 是 torchvision.datasets 内置的一个经典图像分类基准数据集。你可以把它看作是老牌手写数字数据集 MNIST 的现代“升级版”。
在深度学习的发展史上,MNIST(手写数字 0-9)曾是入门圣经。但随着模型越来越强,MNIST 变得太简单了(随便一个浅层网络准确率都能达到 99% 以上)。因此,Zalando 公司推出了 Fashion-MNIST,用来接替 MNIST 作为机器学习算法的“试金石”。
📋 核心规格参数
- 数据规模:总共 70,000 张图像(其中 60,000 张用于训练,10,000 张用于测试)。
- 图像尺寸: 像素的单通道灰度图(Grayscale,通道数为 1)。
- 标签类别:共 10 个日常服饰类别:
- T-shirt/top (T恤)
- Trouser (裤子)
- Pullover (套头衫)
- Dress (连衣裙)
- Coat (外套)
- Sandal (凉鞋)
- Shirt (衬衫)
- Sneaker (运动鞋)
- Bag (包)
- Ankle boot (短靴)
🎯 为什么在学习 PyTorch 时经常用它?
- 结构与 MNIST 完全一致:它的尺寸()、通道数(单通道)和加载接口和 MNIST 一模一样。如果你会跑 MNIST,就能无缝切换到 FashionMNIST。
- 比数字识别更有挑战性:衣服的轮廓、纹理、边缘比单纯的手写数字复杂得多,能够更好地暴露出模型在特征提取上的能力差异。
- 轻量、免下载折腾:因为图片很小(几万张图也就几十兆),在本地电脑上用 CPU 或普通显卡就能秒级下载并跑完训练,是学习 MLP(多层感知机) 和 CNN(卷积神经网络) 的绝佳演练场。
💻 在代码中如何使用它?
结合你前面学到的 transforms,通常这样把它加载进来:
import torchvision
from torchvision import transforms
# 1. 下载并加载训练集
train_dataset = torchvision.datasets.FashionMNIST(
root='./data', # 数据保存的本地路径
train=True, # True 表示训练集,False 表示测试集
download=True, # 如果本地没有会自动联网下载
transform=transforms.ToTensor() # 顺便把图片转成 [0, 1] 的 Tensor
)
print(len(train_dataset)) # 输出 60000
image, label = train_dataset[0]
print(image.shape) # 输出 torch.Size([1, 28, 28]) - 1通道,28x28
print(label) # 输出对应的类别编号(如 9 代表短靴)