MNIST 包括6万张28x28的训练样本,1万张测试样本,很多教程都会对它”下手”几乎成为一个 “典范”,可以说它就是计算机视觉里面的Hello World。所以我们这里也会使用MNIST来进行实战。
前面在介绍卷积神经网络的时候说到过LeNet-5,LeNet-5之所以强大就是因为在当时的环境下将MNIST数据的识别率提高到了99%,这里我们也自己从头搭建一个卷积神经网络,也达到99%的准确率。
import
首先,我们定义一些超参数。
BATCH_SIZE
因为Pytorch里面包含了MNIST的数据集,所以我们这里直接使用即可。 如果第一次执行会生成data文件夹,并且需要一些时间下载,如果以前下载过就不会再次下载了。
由于官方已经实现了dataset,所以这里可以直接使用DataLoader来对数据进行读取。
# 下载训练集
下面我们定义一个网络,网络包含两个卷积层,conv1和conv2,然后紧接着两个线性层作为输出,最后输出10个维度,这10个维度我们作为0-9的标识来确定识别出的是那个数字。
# 定义模型
#生成模型和优化器
# 定义训练函数
# 定义测试函数
# 最后开始训练和测试
Train Epoch: 20 [14848/60000 (25%)] Loss: 0.000499
Train Epoch: 20 [30208/60000 (50%)] Loss: 0.002818
Train Epoch: 20 [45568/60000 (75%)] Loss: 0.011781
Test set: Average loss: 0.0249, Accuracy: 59469/60000 (99%)