用PyTorch实现MNIST手写数字识别

本文介绍了如何使用PyTorch和TorchVision库加载和处理MNIST数据集,构建一个包含卷积层和全连接层的神经网络模型,进行训练,并通过可视化训练曲线评估性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MNIST包含70,000张手写数字图像: 60,000张用于培训,10,000张用于测试。图像是灰度的,28x28像素的,并且居中的,以减少预处理和加快运行。

1、导入相关库

import torch
import torchvision
from torch.utils.data import DataLoader
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import matplotlib.pyplot as plt

2、定义参数

epoch的数量定义了我们将循环整个训练数据集的次数,而learning_rate和momentum是我们稍后将使用的优化器的超参数,对于可重复的实验,我们必须为任何使用随机数产生的东西设置随机种子——如numpy和random!

n_epochs = 3
batch_size_train = 64
batch_size_test = 1000
learning_rate = 0.01
momentum = 0.5
log_interval = 10
random_seed = 1
torch.manual_seed(random_seed)

3、加载数据集

我们还需要下载数据集,这就是TorchVision发挥作用的地方。它让我们用一种方便的方式来加载MNIST数据集。我们将使用batch_size=64进行训练,并使用size=1000对这个数据集进行测试。下面的Normalize()转换使用的值0.1307和0.3081是MNIST数据集的全局平均值和标准偏差,这里我们将它们作为给定值。运行下面的程序后,会自动将数据集下载到目录下的data文件夹。

train_loader = torch.utils.data.DataLoader(
    torchvision.datasets.MNIST('./data/', train=True, download=True,
                               transform=torchvision.transforms.Compose([   #用于组合多个图像变换操作
                                   torchvision.transforms.ToTensor(),       #将PIL图像或NumPy ndarray转换为torch.FloatTensor,并且缩放像素值的范围从[0, 255]到[0.0, 1.0]
                                   torchvision.transforms.Normalize(        #对张量图像进行标准化,均值和标准差.out=(in-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值