【第3次作业】卷积神经网络

【第3次作业】卷积神经网络

卷积神经网络(CNN)

PyTorch里包含了 MNIST, CIFAR10 等常用数据集,调用 torchvision.datasets 即可把这些数据由远程下载到本地。

创建网络

定义网络时,需要继承nn.Module,并实现它的forward方法,把网络中具有可学习参数的层放在构造函数init中。

全连接网络

卷积神经网络

定义训练和测试函数

全连接网络训练

卷积神经网络

经过全连接网络和卷积神经网络训练后可以看到卷积神经网络训练后的正确率更高,说明卷积神经网络能够更好的判断图像的特征信息,主要通过卷积和池化

打乱像素后再次在两个网络上训练与测试

全连接网络训练(打乱后)

正确率甚至提高了两个百分点,可能和白色像素的分布范围更大有关?

卷积神经网络(打乱后)

正确率降的很多, 卷积神经网络的性能明显下降。这是因为对于卷积神经网络,会利用像素的局部关系,但是打乱顺序以后,这些像素间的关系将无法得到利用。CNN能够提取一些图像的特征,在图片像素没打乱之前,白色像素都汇聚在一起,训练效果更好。

2.CNN对CIFAR10 分类

首先下载数据,定义网络,损失函数和优化器

大体与之前的卷积网络差不多,训练网络后,在整个数据集上的准确率为64%,正确率不是特别高。

3.使用 VGG16 对 CIFAR10 分类

transforms.Normalize这个函数的参数不再是“(0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]”,变为“(0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010))]”。DataLoader中的batch_size由64增加到128

VGG 网络定义也有些却别

在训练后进行验证

正确率已经达到83.46,较64%有显著提高,可见VGG模型的强大之处

posted @ 2021-10-16 13:41  Chengsiouc  阅读(91)  评论(0)    收藏  举报