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-