用PyTorch实现MNIST手写数字识别

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-

你可能感兴趣的:(用PyTorch实现MNIST手写数字识别)