CNN中的几个核心层
【摘要】 卷积神经网络(CNN)通常由多种类型的层组合而成,每层承担特定功能,共同完成特征提取和分类任务。以下是CNN中常见的核心层及其作用: 1. 卷积层(Convolutional Layer)功能:通过卷积核(Filter)提取输入数据的局部空间特征(如边缘、纹理、形状)。关键操作:卷积核在输入上滑动,计算局部区域的加权和(点积)。输出特征图(Feature Map),通道数由卷积核数量决定。超...
卷积神经网络(CNN)通常由多种类型的层组合而成,每层承担特定功能,共同完成特征提取和分类任务。以下是CNN中常见的核心层及其作用:
1. 卷积层(Convolutional Layer)
- 功能:通过卷积核(Filter)提取输入数据的局部空间特征(如边缘、纹理、形状)。
- 关键操作:
- 卷积核在输入上滑动,计算局部区域的加权和(点积)。
- 输出特征图(Feature Map),通道数由卷积核数量决定。
- 超参数:
- 核大小(
kernel_size
,如3x3
)、步长(stride
)、填充(padding
)。 - 输出通道数(
out_channels
,即卷积核数量)。
- 核大小(
- 示例:
输入(3, 32, 32)
(RGB图像),卷积核(16, 3, 3)
,输出(16, 32, 32)
(16个特征图)。
2. 激活函数层(Activation Layer)
- 功能:引入非线性,使模型能够学习复杂模式。
- 常见激活函数:
- ReLU(最常用):
f(x) = max(0, x)
,缓解梯度消失,加速收敛。 - Sigmoid/Tanh:用于二分类或特定场景(但易梯度消失)。
- LeakyReLU/Swish:改进版ReLU,解决“神经元死亡”问题。
- ReLU(最常用):
- 代码示例:
nn.ReLU(), nn.Sigmoid()
3. 池化层(Pooling Layer)
- 功能:对特征图进行下采样,减少参数量和计算量,增强平移不变性。
- 常见类型:
- 最大池化(Max Pooling):取局部区域最大值(保留显著特征)。
- 平均池化(Average Pooling):取局部区域平均值(平滑特征)。
- 超参数:
- 池化窗口大小(
kernel_size
,如2x2
)、步长(通常与窗口大小相同)。
- 池化窗口大小(
- 示例:
输入(16, 32, 32)
,2x2
最大池化后输出(16, 16, 16)
。
4. 全连接层(Fully Connected Layer, FC Layer)
- 功能:将卷积层提取的高维特征映射到样本类别空间(分类或回归)。
- 结构:
- 每个神经元与上一层的所有神经元连接(参数量大)。
- 通常接在卷积层和池化层之后,作为网络的“分类器”。
- 问题:
- 参数量多,易过拟合(需配合Dropout或正则化)。
- 现代改进:
- 用**全局平均池化(Global Average Pooling, GAP)**替代全连接层(如ResNet),减少参数。
5. 归一化层(Normalization Layer)
- 功能:加速训练收敛,稳定网络,缓解内部协变量偏移(Internal Covariate Shift)。
- 常见类型:
- Batch Normalization (BN):对每个批次的特征图归一化(沿通道方向)。
- Layer Normalization (LN):对单个样本的所有特征归一化(常用于RNN)。
- Instance Norm/Group Norm:针对特定场景的变体。
- 代码示例:
nn.BatchNorm2d(num_features=16) # 对16通道的特征图归一化
6. Dropout层
- 功能:随机丢弃部分神经元(概率
p
),防止过拟合。 - 原理:
- 训练时随机“关闭”神经元,迫使网络不依赖特定神经元。
- 测试时保留所有神经元,但权重乘以
(1-p)
补偿。
- 代码示例:
nn.Dropout(p=0.5) # 丢弃50%神经元
7. 转置卷积层(Transposed Convolution, Deconvolution)
- 功能:对特征图进行上采样(如语义分割中恢复空间分辨率)。
- 原理:
- 通过插值和卷积操作扩大特征图尺寸(可能产生“棋盘效应”,需谨慎使用)。
- 替代方案:
- 双线性插值 + 普通卷积:更稳定但灵活性较低。
8. 残差连接(Residual Connection)
- 功能:解决深层网络梯度消失问题,允许梯度直接流向浅层。
- 结构:
Output = F(x) + x
(F(x)
为残差块,x
为输入跳过连接)。
- 典型网络:ResNet、DenseNet。
典型CNN架构示例
- 输入层:图像数据(如
(3, 224, 224)
)。 - 卷积层 + ReLU:提取特征(如
64@3x3
)。 - 池化层:下采样(如
2x2
Max Pooling)。 - 重复步骤2-3:堆叠多个卷积-池化块,逐步提取高级特征。
- 全连接层/GAP:将特征映射到类别空间。
- 输出层:Softmax分类(多分类)或Sigmoid(二分类)。
总结表
层类型 | 核心作用 | 典型应用场景 |
---|---|---|
卷积层 | 提取局部空间特征 | 所有CNN(如VGG、ResNet) |
激活函数层 | 引入非线性 | 卷积层/全连接层后 |
池化层 | 下采样,减少参数量 | 特征提取阶段 |
全连接层 | 分类或回归 | 网络末端(现代架构中逐渐被GAP替代) |
归一化层 | 加速训练,稳定网络 | 卷积层/全连接层后 |
Dropout层 | 防止过拟合 | 全连接层附近 |
转置卷积层 | 上采样(如语义分割) | U-Net、GAN生成器 |
残差连接 | 解决深层网络梯度消失 | ResNet、DenseNet |
通过合理组合这些层,CNN能够高效处理图像、视频等结构化数据,成为计算机视觉领域的核心模型。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)