问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

卷积神经网络:卷积层、池化层和全连接层详解

创作时间:
作者:
@小白创作中心

卷积神经网络:卷积层、池化层和全连接层详解

引用
CSDN
1.
https://m.blog.csdn.net/JineD/article/details/143267997

卷积神经网络(Convolutional Neural Network,CNN)是深度学习中一种重要的神经网络模型,特别适用于处理图像数据。它通过卷积层、池化层和全连接层等组件,能够有效地提取图像特征并进行分类。本文将详细介绍卷积神经网络中的核心组件及其工作原理。

1. 卷积层

1.1. 卷积操作

卷积操作是卷积神经网络的基础。假设有一个5x5的输入图像,我们定义一个3x3的卷积核(其中的数值是随机生成的)。然后,我们将卷积核与输入图像的局部区域进行逐元素相乘并求和的操作,得到一个结果。接着,将卷积核在输入图像上滑动,重复上述计算过程,直到覆盖整个输入图像。

这个过程可以总结为以下几个关键点:

  • 步长(Stride):卷积核每次滑动的距离。默认为1,也可以设置为其他值。
  • 卷积核的值:初始时随机生成,后续可以通过训练进行更新。
  • 填充(Padding):在输入图像周围添加额外的像素(通常是0),以控制输出图像的大小。例如,对于一个5x5的输入图像,如果使用3x3的卷积核且不进行填充,输出将是3x3;但如果在输入图像周围添加一圈0(即padding=1),则输出将保持5x5的大小。

卷积操作的输出大小可以通过以下公式计算:
$$
输出大小 = \frac{W - F + 2P}{S} + 1
$$
其中,$W$ 是输入图像的宽度,$F$ 是卷积核的大小,$S$ 是步长,$P$ 是填充的像素数。

1.2. 实际操作

在实际编程中,我们可以使用深度学习框架(如PyTorch或TensorFlow)提供的卷积函数,而无需手动实现卷积操作。以PyTorch为例,Conv2d函数的主要参数包括:

  • in_channels:输入的通道数
  • out_channels:输出的通道数
  • kernel_size:卷积核的大小
  • stride:步长
  • padding:填充的像素数
  • dilation:控制卷积核之间的间距
  • groups:控制输入和输出之间的连接
  • bias:是否添加偏置项
  • padding_mode:填充模式

2. 池化层

池化层的主要作用是降低数据的空间维度,减少计算资源的消耗,并控制过拟合。常见的池化操作包括最大池化和平均池化。

池化操作类似于卷积操作,但不是进行卷积计算,而是对窗口内的值进行最大值或平均值的计算。例如,使用2x2的窗口和步长为2的池化操作,可以将图像的尺寸减半,同时保留重要的特征信息。

池化层之所以有效,是因为图像特征具有不变性,通过下采样不会丢失重要的特征信息。最常用的池化层形式是2x2的窗口,步长为2,这可以将75%的激活信息丢弃,保留最大的值,从而去除一些噪声信息。

3. 全连接层

全连接层通常位于卷积神经网络的最后,用于对特征进行分类。它的主要作用是将池化层输出的特征矩阵转换为一维特征向量,并最终输出分类结果。

全连接层通过降维操作,将高维特征映射到低维空间,最终输出的向量维度等于分类的类别数。在输出层之前,通常会使用softmax函数将输出向量转换为概率分布,使得每个类别的概率值在0到1之间,且总和为1。

4. 可视化例子

以经典的LeNET-5网络为例,该网络用于处理32x32的手写数字图像。网络结构如下:

  1. 第一卷积层:输入32x32x1,卷积核5x5,步长1,padding 0,输出6@28x28
  2. 第一池化层:通道数不变,大小减半,输出6@14x14
  3. 第二卷积层:输出16通道,大小10x10
  4. 第二池化层:输出16通道,大小5x5
  5. 全连接层
  6. 输出层

通过可视化工具(如TensorSpace),可以直观地看到每一层的输出特征图,帮助理解卷积神经网络的工作过程。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号