一、MNIST数据集
MNIST数据集是深度学习和计算机视觉领域非常经典且基础的数据集,它包含了大量的手写数字图片,通常用于训练各种图像处理系统,也被广泛用于机器学习领域的训练和测试。
1.数据集概述
- 来源:MNIST数据集由Yann LeCun等人于1994年创建,它是NIST(美国国家标准与技术研究所)数据集的一个子集。
- 内容:数据集主要包含手写数字(0~9)的图片及其对应的标签。
- 用途:作为深度学习和计算机视觉领域的入门级数据集,它适合初学者练习建立模型、训练和预测。
2.数据集组成
MNIST数据集总共包含两个子数据集:训练数据集和测试数据集。
训练数据集:
- 包含了60,000张28x28像素的灰度图像。
- 对应的标签文件包含了60,000个标签,每个标签对应一张图像中的手写数字。
测试数据集:
- 包含了10,000张28x28像素的灰度图像。
- 对应的标签文件包含了10,000个标签。
3.文件结构
MNIST数据集包含四个文件,分别是训练集图像、训练集标签、测试集图像和测试集标签。这些文件以gzip格式压缩,并且不是标准的图像格式,需要通过专门的编程方式读取。
- 训练集图像:train-images-idx3-ubyte.gz
- 训练集标签:train-labels-idx1-ubyte.gz)
- 测试集图像:t10k-images-idx3-ubyte.gz
- 测试集标签:t10k-labels-idx1-ubyte.gz
4.数据特点
- 图像大小:每张图像的大小为28x28像素,是一个灰度图像,位深度为8(灰度值范围为0~255)。
- 数据来源:手写数字来自250个不同的人。
- 数据格式:图像数据以字节的形式存储在二进制文件中,标签文件则存储了每张图像对应的数字标签。
二、代码实现
1.数据加载与预处理
import torch
from torch import nn # 导入神经网络模块
from torch.utils.data import DataLoader # 数据包管理工具,打包数据
from torchvision import datasets # 封装了很多与图像相关的模型,数据集
from torchvision.transforms import ToTensor
"""下载训练集数据(包含训练图片和标签)"""
training_data = datasets.MNIST(
root="data",
train=True,
download=True,
transform=ToTensor(), # 张量,图片是不能直接传入神经网络模型
)
"""下载测试集数据(包括训练图片和标签)"""
test_data = datasets.MNIST(
root="data",
train=False,
download=True,
transform=ToTensor()
)
train_dataloader = DataLoader(training_data, batch_size=64) # 64张图片为一个包
test_dataloader = DataLoader(test_data, batch_size=64)
- 下载数据集:使用torchvision.datasets.MNIST下载并加载MNIST数据集。数据集分为训练集和测试集,train=True为训练集数据ÿ