1.载入模块
|
|
其中torchvision.transforms 用于数据预处理,torchvision.datasets加载内置数据集
2.设置参数
|
|
迭代次数num_epochs设置为5;批处理样本数batch_size设置为100;学习率learning_rate设置为0.001。
3.加载数据集
加载训练集,将MNIST数据集自动从网上下载并解压,train=true表示取出训练集部分,并变换为张量。
|
|
加载测试集,train=False即表示取出测试集部分,并变换为张量。
|
|
将训练集的60000张图片划分成600份,每份100张图,用于mini-batch输入。同时将测试集的10000张图片分成100份,每份100张图。shffule=True在表示不同批次的数据遍历时,打乱顺序,反之则不打乱顺序。
|
|
4.CNN模型(两个卷积层)
|
|
5.损失函数与优化方法
|
|
6.训练模型
|
|
Epoch [1/5], Iter [100/600] Loss: 0.1363
Epoch [1/5], Iter [200/600] Loss: 0.0487
Epoch [1/5], Iter [300/600] Loss: 0.0688
Epoch [1/5], Iter [400/600] Loss: 0.1273
Epoch [1/5], Iter [500/600] Loss: 0.0283
Epoch [1/5], Iter [600/600] Loss: 0.0375
Epoch [2/5], Iter [100/600] Loss: 0.0398
Epoch [2/5], Iter [200/600] Loss: 0.0595
Epoch [2/5], Iter [300/600] Loss: 0.0793
Epoch [2/5], Iter [400/600] Loss: 0.0166
Epoch [2/5], Iter [500/600] Loss: 0.0235
Epoch [2/5], Iter [600/600] Loss: 0.0128
Epoch [3/5], Iter [100/600] Loss: 0.0273
Epoch [3/5], Iter [200/600] Loss: 0.0507
Epoch [3/5], Iter [300/600] Loss: 0.0384
Epoch [3/5], Iter [400/600] Loss: 0.0150
Epoch [3/5], Iter [500/600] Loss: 0.0086
Epoch [3/5], Iter [600/600] Loss: 0.0616
Epoch [4/5], Iter [100/600] Loss: 0.0243
Epoch [4/5], Iter [200/600] Loss: 0.0112
Epoch [4/5], Iter [300/600] Loss: 0.0391
Epoch [4/5], Iter [400/600] Loss: 0.0140
Epoch [4/5], Iter [500/600] Loss: 0.0324
Epoch [4/5], Iter [600/600] Loss: 0.0053
Epoch [5/5], Iter [100/600] Loss: 0.0358
Epoch [5/5], Iter [200/600] Loss: 0.0109
Epoch [5/5], Iter [300/600] Loss: 0.0066
Epoch [5/5], Iter [400/600] Loss: 0.0028
Epoch [5/5], Iter [500/600] Loss: 0.0380
Epoch [5/5], Iter [600/600] Loss: 0.0518
7.模型测试
|
|
Test Accuracy of model on the 10000 test images:99 %
8.保存模型
|
|