CNN的每一层的含义
【摘要】 卷积神经网络(CNN)是一种专门用于处理网格化数据(如图像、视频、音频等)的深度学习模型,其核心思想是通过局部感受野、权重共享和层次化特征提取来高效学习数据的空间特征。CNN的每一层都有特定的功能,通常包括卷积层(Convolutional Layer)、激活函数层(Activation Layer)、池化层(Pooling Layer)、**全连接层(Fully Connected Lay...
卷积神经网络(CNN)是一种专门用于处理网格化数据(如图像、视频、音频等)的深度学习模型,其核心思想是通过局部感受野、权重共享和层次化特征提取来高效学习数据的空间特征。CNN的每一层都有特定的功能,通常包括卷积层(Convolutional Layer)、激活函数层(Activation Layer)、池化层(Pooling Layer)、**全连接层(Fully Connected Layer)**等。以下是CNN各层的详细解释:
一、输入层(Input Layer)
- 功能:接收原始数据(如图像、视频帧等)。
- 特点:
- 输入数据的维度通常为
(高度, 宽度, 通道数)
(如RGB图像为224x224x3
)。 - 不进行任何计算,仅作为数据入口。
- 输入数据的维度通常为
二、卷积层(Convolutional Layer)
- 功能:通过卷积核(Filter/Kernel)提取输入数据的局部特征(如边缘、纹理、颜色等)。
- 核心操作:
- 卷积核滑动:卷积核在输入数据上按步长(Stride)滑动,计算局部区域的点积(Dot product)。
- 特征图生成:每个卷积核生成一个特征图(Feature Map),表示输入数据中某种特征的响应强度。
- 关键参数:
- 卷积核大小(Kernel Size):如
3x3
、5x5
,决定感受野大小。 - 步长(Stride):卷积核滑动的步长(如
1
或2
),影响输出尺寸。 - 填充(Padding):在输入边缘补零(如
"same"
保持尺寸,"valid"
不填充缩小尺寸)。 - 输出通道数(Filters):卷积核的数量(如
64
个3x3
卷积核生成64
个特征图)。
- 卷积核大小(Kernel Size):如
- 数学表达:
[
\text{Output}(i,j) = \sum_{m=0}^{k-1}\sum_{n=0}^{k-1} \text{Input}(i+m, j+n) \cdot \text{Kernel}(m,n) + \text{Bias}
]
其中k
为卷积核大小。 - 示例:
- 输入:
28x28x1
(灰度手写数字图像)。 - 卷积核:
3x3x1
(单通道),共16
个。 - 输出:
26x26x16
(假设步长为1
,无填充)。
- 输入:
三、激活函数层(Activation Layer)
- 功能:引入非线性变换,使CNN能够学习复杂模式(否则仅能拟合线性函数)。
- 常用激活函数:
- ReLU(Rectified Linear Unit):
[
\text{ReLU}(x) = \max(0, x)
]- 优点:计算高效,缓解梯度消失问题。
- 缺点:可能导致“神经元死亡”(输出恒为0)。
- Leaky ReLU:
[
\text{LeakyReLU}(x) = \begin{cases}
x & \text{if } x \geq 0 \
\alpha x & \text{otherwise}
\end{cases} \quad (\alpha \text{ 为小常数,如 } 0.01)
] - Sigmoid/Tanh:
- 适用于二分类输出层,但易导致梯度消失(不推荐用于隐藏层)。
- ReLU(Rectified Linear Unit):
四、池化层(Pooling Layer)
- 功能:对特征图进行下采样(Downsampling),减少参数量和计算量,同时增强模型的平移不变性(如对物体位置的小范围变化不敏感)。
- 常见类型:
- 最大池化(Max Pooling):取局部区域的最大值。
[
\text{MaxPool}® = \max_{i,j \in R} \text{Input}(i,j)
]- 优点:保留显著特征(如边缘)。
- 平均池化(Average Pooling):取局部区域的平均值。
[
\text{AvgPool}® = \frac{1}{|R|}\sum_{i,j \in R} \text{Input}(i,j)
]- 优点:平滑特征,但可能丢失关键信息。
- 最大池化(Max Pooling):取局部区域的最大值。
- 关键参数:
- 池化窗口大小(Pool Size):如
2x2
。 - 步长(Stride):通常等于窗口大小(如
2
),避免重叠。
- 池化窗口大小(Pool Size):如
- 示例:
- 输入:
26x26x16
(来自卷积层)。 - 池化:
2x2
最大池化,步长2
。 - 输出:
13x13x16
。
- 输入:
五、全连接层(Fully Connected Layer, FC Layer)
- 功能:将卷积层提取的分布式特征表示映射到样本的类别空间(如分类任务中的类别概率)。
- 特点:
- 每个神经元与前一层的所有神经元相连(类似传统神经网络)。
- 通常位于CNN的末端,用于整合全局信息。
- 关键参数:
- 神经元数量:如
1024
个神经元对应高维特征表示。 - 输出维度:等于类别数(如
10
对应MNIST手写数字分类)。
- 神经元数量:如
- 示例:
- 输入:
13x13x16 = 2704
维向量(展平后)。 - 全连接层:
2704 → 1024 → 10
(输出类别概率)。
- 输入:
六、输出层(Output Layer)
- 功能:生成最终预测结果(如分类概率、回归值等)。
- 常见形式:
- 分类任务:使用 Softmax 激活函数,输出类别概率分布。
[
\text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^K e^{z_j}} \quad (K \text{ 为类别数})
] - 回归任务:直接输出连续值(无激活函数或使用线性激活)。
- 分类任务:使用 Softmax 激活函数,输出类别概率分布。
七、其他组件(可选)
1. 批归一化层(Batch Normalization, BN)
- 功能:对每批数据的特征进行归一化(均值为0,方差为1),加速训练并缓解梯度消失/爆炸问题。
- 位置:通常位于卷积层或全连接层之后、激活函数之前。
2. 丢弃层(Dropout Layer)
- 功能:随机丢弃部分神经元(如概率
p=0.5
),防止过拟合。 - 位置:通常用于全连接层之间。
3. 跳跃连接(Skip Connection)
- 功能:将浅层特征直接传递到深层(如ResNet中的残差连接),缓解深层网络梯度消失问题。
八、典型CNN架构示例
以 LeNet-5(手写数字识别)为例:
- 输入层:
32x32x1
(灰度图像)。 - 卷积层1:
6
个5x5
卷积核,步长1
,输出28x28x6
。 - 平均池化层1:
2x2
窗口,步长2
,输出14x14x6
。 - 卷积层2:
16
个5x5
卷积核,步长1
,输出10x10x16
。 - 平均池化层2:
2x2
窗口,步长2
,输出5x5x16
。 - 全连接层1:
5x5x16 = 400 → 120
个神经元。 - 全连接层2:
120 → 84
个神经元。 - 输出层:
84 → 10
(Softmax分类)。
九、总结:CNN各层的作用
层类型 | 核心功能 |
---|---|
输入层 | 接收原始数据(如图像)。 |
卷积层 | 提取局部特征(如边缘、纹理)。 |
激活函数层 | 引入非线性,增强模型表达能力。 |
池化层 | 下采样,减少参数量,增强平移不变性。 |
全连接层 | 整合全局特征,映射到类别空间。 |
输出层 | 生成最终预测结果(如分类概率)。 |
批归一化层 | 加速训练,稳定梯度。 |
丢弃层 | 防止过拟合。 |
通过层次化组合这些层,CNN能够自动学习从低级特征(如边缘)到高级语义(如物体类别)的复杂表示,广泛应用于图像分类、目标检测、语义分割等任务。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)