【OUC_SE_2022】第三周作业:卷积神经网络基础

本文是OUC2022秋季软件工程作业,探讨卷积神经网络(CNN)的基础知识和实践。内容涵盖CNN基本结构,包括卷积层、池化层和全连接层,以及AlexNet、ZFNet、VGG、GoogleNet和ResNet等典型网络结构。此外,通过MNIST和CIFAR10数据集的分类实践,展示了CNN相比全连接网络的优势。实验结果表明,CNN在处理图像任务时表现出更好的性能。最后,讨论了提高模型准确率的方法,如dropout、加深网络和调整激活函数。
摘要由CSDN通过智能技术生成

本博客为OUC2022秋软件工程第三次作业

第三周作业:卷积神经网络基础

第18小组

组长:罗浩宇

成员:罗浩宇

Part 1 视频学习

一、CNN的基本结构

1. 卷积 (CNN Layer)

一维卷积:常用于信号处理计算信号的延迟累计

二维卷积:常用于图像处理

2. 池化 (Pooling)

作用:

保留了主要特征的同时,减少参数和计算量,防止过拟合,提高模型的泛化能力。

一般处于卷积层与卷积层之间,全连接层和全连接层之间。

类型:最大值池化(Max pooling)、平均池化(Average pooling)。

image-20221015203623431
3. 全连接 (FC layer)

两层之间所有神经元都有权重链接;

通常全连接层在卷积神经网络的尾部;

全连接层的参数量通常最大。

二、典型的网络结构

1. AlexNet

优化方法:

ReLU激活函数、DropOut(随机失活)、数据增强

优点:

解决了梯度消失的问题(正区间)

计算速度快

收敛速度远快于sigmoid

image-20221015203959456
2. ZFNet

网络结构与AlexNet相同,将卷积层1中感受野大小由 11x11 改为 7x7, 步长由4改为2.

卷积层3,4,5的滤波器个数改为512,512,1024。

3. VGG

对网络深度进行了加深。

4. GoogleNet

Inception v2 对一些模型结构进行了改进。没有全连接层。参数量为Alexnet的 1/12 。

而 Inception v3 进一步对 v2d的参数量进行了降低。增加了非线性激活函数,使网络产生更多独立特,表征能力更强,训练更快。

image-20221015204507701

5. ResNet

深度大大加深,有152层,结构是一个基本的VGG结构.

引入了残差学习网络(deep residual learning network),可以被用来训练非常深的网络,并解决了梯度消失的问题。

img

Part 2 代码练习

一、MNIST 数据集分类

colab_demo/05_01_ConvNet.ipynb at master · OUCTheoryGroup/colab_demo (github.com)

1. 加载数据 (MNIST)

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

显示数据集中的部分图像:

image-20221015185624121
2. 创建网络

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

利用autograd,在nn.Module的子类中定义forward函数,backward函数就会自动被实现。

然后,定义训练和测试函数。完成网络的创建。

(代码略)

3. 在小型全连接网络上训练(Fully-connected network)

在小型全连接网络上训练模型,输出训练过程和结果如下:

可以看到,平均loss在0.3796,从训练了70%左右开始趋于稳定,loss接近于在0.3000左右浮动,其准确度大约为89%。

image-20221015190324553
4. 在卷积神经网络上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值