第3次作业:卷积神经网络


【第一部分】视频学习心得及问题总结

视频学习心得:看完视频主要了解了卷积神经网络的基础部分,先了解了卷积神经网络的一些基本应用,然后了解了卷积神经网络和传统神经网络的区别,它采用局部关联参数共享的形式。然后学习了卷积的计算方式了解了卷积核、特征图、深度等概念,之后大致了解了一下池化和全连接。第二部分主要了解了集中典型的卷积网络如AlexNet、VGG、GoogleNet、ResNet,然后通过观察代码运行看到结果的差距。

问题总结:关于计算卷积参数量和特征图的部分不是很懂。

【第二部分】代码练习

 一、MNIST 数据集分类

运行代码加载数据项并显示数据集中的部分图像

 然后创建网络并定义训练和测试函数

在小型全连接网络上的训练结果如图示所示:

 可以看出来正确率是87%,并不是很高,

然后在卷积神经网络上训练:

 正确率相比全连接网络提高了很多。

打乱像素后再在两个网络上分别训练:

全连接网络:

卷积神经网络:

可以看出来,打乱像素后,全连接网络没有什么影响,但是卷积神经网络受影响大,正确率大大下降

这是因为对于卷积神经网络,会利用像素的局部关系,但是打乱顺序以后,这些像素间的关系将无法得到利用。

二、CIFAR10 数据集分类

首先加载一些图片,然后定义网络、损失函数和优化器,然后经过了长达三分钟的网络训练

 接下来开始测试,提取八张图片,然后把图片输入模型,观察结果

 发现除了第一张cat识别成了ship,其他都对了,还是可以的。

最后再看网络在整个数据集上的表现:

 可以看到正确率为63%,不算很低,但也不算高,还有很大的进步空间。

三、使用 VGG16 对 CIFAR10 分类

先定义dataloader,然后定义vgg网络,初始化网络,然后训练网络,代码和前面几个都是一样的

 验证准确率之后

 发现正确率从63%提升到了85%,提升了非常多,性能提升很多。

相关