cnn神经网络(CNN神经网络代码)

cnn神经网络(CNN神经网络代码)一张图片 在数学的世界里 是由一个个像素点组成的 而一个像素点 又是由 RGB 三色按一定比例混合而成的 所以 一张图片可以由 R G B 三个数值矩阵所表示 如图 1 1 所示 由于未找到合适的彩色图像 这里用灰度图示例 灰度图由单一数值矩阵构成 而彩色图则包含三个矩阵 在传统神经网络中 我们需要输入数据的特征



一张图片,在数学的世界里,是由一个个像素点组成的;而一个像素点,又是由RGB三元色按一定比例混合而成的。所以,一张图片可以由R、G、B三个数值矩阵所表示。如图1.1所示(由于未找到合适的彩色图像,这里用灰度图示例,灰度图由单一数值矩阵构成,而彩色图则包含三个矩阵):

在传统神经网络中,我们需要输入数据的特征,而这个特征只能是一维的;但是对于图片,它的特征是一个个的像素点,这些像素点被储存在矩阵中,以二维的形式存在,显然是无法输入到传统神经网络中去的。在卷积出现之前,我们的做法是将二维特征拉伸成一维,再输入神经网络。虽然解决了输入端的问题,但却导致了信息损失:在二维像素矩阵中,每个像素点与其周围的像素点存在着空间关系,一旦展平成一维,这些宝贵的位置信息便丢失了,从而影响了模型的预测效果。

此外,图片由成千上万的像素点组成,如果采用全连接层,将产生巨大的参数数量,这样的训练成本往往是不可承受的。

1998年,Yann LeCun等人发表论文《Gradient-based learning applied to document recognition》正式提出了CNN的概念,很好地解决了图片特征提取的问题。下面,我们就来详细介绍一下CNN的原理。

传统神经网络由输入层、隐藏层(位于输入层和输出层之间)和输出层组成,每层由一字排开的全连接的神经元构成,如图2.1所示:

显然,这种结构无法直接处理二维特征矩阵输入。因此,在CNN中,我们对输入层和隐藏层的结构进行了调整(输出层保持不变,原因后续解释),如图2.2所示:

图 2.2

我们可以看到,CNN的输入层接受二维数值矩阵,而隐藏层由传统的全连接层变为了卷积层和池化层;最后通过全连接层进行输出。输入端的改变是为了适应二维矩阵输入;输出端保持不变是因为无论哪种神经网络,我们的最终任务是相同的,因此输出层的结构也应保持一致。现在,我们重点关注隐藏层的变化。隐藏层的目标是提取特征和融合信息,供输出层做出最佳判断。那么,池化层和卷积层是如何实现这一目标的呢?接下来的内容将对此进行详细介绍。

卷积层作为CNN隐藏层的核心结构,其目的是提取并浓缩图片的二维矩阵信息。在传统神经网络中,一个隐藏层包含n个神经元;而在CNN中,一个卷积层包含n个卷积核。卷积核本身也是一个二维矩阵,尺寸小于输入矩阵,通过在输入矩阵上滑动并执行计算,实现信息提取。具体的运算步骤如图2.3所示:

图2.4是一个具体的例子:

图2.5是卷积核滑动的动图演示:

2.2.1 易混淆点:卷积核的层数与卷积核的数量

为了解释清楚这个概念,我们必须引入通道的概念:

  • 通道(channel):
    • 图像通道:输入层数据的通道数。例如,在彩色图像中,通道指的是颜色的组成部分,通常是红色(Red)、绿色(Green)、蓝色(Blue)三种颜色,分别对应三个独立的通道。每个通道包含了图像在该颜色维度上的强度信息。
    • 特征通道:除了输入层的通道外,网络的每一层卷积层都可以生成多个特征通道,每个通道提取输入数据的不同特征,例如边缘、纹理、形状等。特征通道的数量由该层的卷积核数量决定,例如,某个卷积层有16个卷积核,则该层的输出将具有16个通道

卷积核的数量可以根据需要设定,但每个卷积核的层数取决于其所作用数据的通道数。第一个卷积层的卷积核数等于图像通道数,后面的卷积层中的卷积核数等于特征通道数。例如,在图2.5中,输入数据有3个通道,因此每个卷积核也必须有3层。经过卷积层处理后,传入下一个卷积层的数据通道数将等于上一层设定的卷积核数量。每个卷积核产生一个特征通道。

继卷积层提取特征之后,池化层接棒进一步处理这些特征信息。池化层的主要目的是降低数据的空间维度,从而减少计算量,并使特征检测更加鲁棒。这一过程同时保留了重要的特征信息,确保了模型对输入数据的泛化能力。

池化操作通常在卷积层输出的特征图上进行。想象一下,特征图是一块由多个小网格组成的大画布,每个小网格包含了卷积层提取的特定特征。池化层的作用就是将这些小网格中的数据进行聚合,以一种统计方式(如取最大值或平均值)来代表每个区域的主要信息。

2.3.1 池化层的工作原理

  1. 选择池化窗口:首先,我们选定一个池化窗口(例如2x2大小),这个窗口将在特征图上滑动。
  2. 应用池化函数:接着,我们对这个窗口内的数据应用池化函数。最常见的池化函数有两种:
    • 最大池化(Max Pooling):选择窗口内的最大值,这个值代表了该区域最显著的特征。
    • 平均池化(Average Pooling):计算窗口内所有值的平均数,以获取区域特征的平均表示。
  3. 滑动窗口:池化窗口在特征图上按照设定的步长滑动,并重复应用池化函数,直到覆盖整个特征图。

具体过程如图2.5所示:

2.3.2 池化层的优势

  • 降维:池化层显著减少了数据的空间尺寸,从而减少了后续层的参数数量和计算量。
  • 不变性:通过池化操作,模型对输入数据的平移、缩放和旋转等变换具有更好的不变性。
  • 特征强化:池化层通过聚合操作强化了特征的表达,有助于保留最重要的信息。
 

        

编程小号
上一篇 2025-02-18 21:40
下一篇 2025-03-14 09:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/30150.html