Day28_【深度学习(7)—卷积神经网络CNN】
前言
深度神经网络:处理复杂数据,并自动提取特征。
卷积神经网络:专用来处理图像数据。
数据类型:
- 结构化数据:全连接神经网络。
- 图像数据:CNN卷积神经网络。(CV领域)
- 文本数据:RNN循环神经网络等。(NLP领域)
卷积神经网络(CNN)
- 背景:传统神经网络的线性层Linear对图像处理效果不佳,计算量太大
- 概念:包含卷积层的神经网络。
其实是在全连接神经网络的隐藏层中增加了卷积层和池化层
1.结构
- 输入层
- 隐藏层:
- 卷积层
- 池化层
- 全连接层
- 输出层
因此以下只讲述隐藏层的部分
2. 卷积层
作用:提取图像特征。
2. 1 卷积核(神经元)
特点:
- 有权重
- 形状:一般是3*3、5*5、7*7、9*9、11*11等奇数尺寸。
- 卷积核的通道数:不是超参数,等于输入数据的通道数。
- 卷积核的数量:是超参数,等于特征图的通道数。
特征图是个整体,由多个通道组成。一个卷积核对应一个通道数,多个卷积核则对应多个通道数。
2.2 特征图
- 尺寸公式
- 向下取整
2.3 超参
- Padding(填充)
- 在图像的边界周围添加额外像素(通常是0或1)。
- 作用
- 保留图像的边缘信息,防止丢失。
- 提高性能。
- 可以使卷积后的特征图尺寸与原图像尺寸相同。
- Stride(步长)
- 卷积核在图像上滑动的步伐大小:通常为1或2。
- 作用
- 影响特征图尺寸。
- 降低计算复杂度。
2.4 卷积计算
核心就是做加权求和:图像数据 点积 卷积核=特征图
分为:
- 多通道 卷积计算
- 多卷积核 卷积计算
每个数据图像的每个(3个)通道 和 每个(2个)卷积核的每个(3个)通道 点积 得到每个(2个)特征图,每个(2个)特征图上对应位置上的元素相加(最后每个位置再加偏置值)
2.5 计算API
nn.Conv2d()
3. 池化层
作用:降维,让计算量提速。
3.1特点
- 池化层的窗口没有权重,只有大小:一般设置窗口大小为3*3,步长为2。这两个都是超参数。
- 池化层的输出和输入的通道数是相等:对宽、高两个维度进行池化,通道数不能池化。
3.2 超参
- stride(步长):通常设为2
- padding(填充):通常设为1
3.3 分类
- 单通道池化
- 多通道池化
3.4 计算API
- 最大池化
- 一般使用,计算量小。
- 实现方法:
nn.MaxPool2d()
- 平均池化
- 实现方法:
nn.AvgPool2d()
- 实现方法:
4. 全连接层
经过卷积和池化的特征图仍然是空间结构化的。全连接层的作用是将这些分散的、空间化的特征整合成一个一维向量,然后通过学习权重,将这些高级特征组合起来,做出最终的分类决策。