卷积神经网络CNN(Convolutional Neural Network)

这篇具有很好参考价值的文章主要介绍了卷积神经网络CNN(Convolutional Neural Network)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

卷积神经网络CNN(Convolutional Neural Network)

一、CNN与NN的区别

卷积神经网络与传统神经网络的区别:
卷积神经网络CNN(Convolutional Neural Network)

二、CNN的整体架构

1.输入层;2.卷积层;3.池化层;4.全连接层
卷积神经网络CNN(Convolutional Neural Network)

三、卷积层做了什么

首先将图形分割成一个个小区域,对于每一个区域特征不同;接下来选择一种特征计算的方法,为每一个区域计算特征值,得到特征图。
在图中表现为,深蓝色区域3×3的方格中下标为权重,依次计算每一个3×3的方格的特征值得到最终的绿色特征图。
卷积神经网络CNN(Convolutional Neural Network)
在上图中,输入特征维度是32×32×3,最后一维表示图像颜色通道,在大多数情况下,采用RGB形式。在实际计算过程中,是每一个通道单独计算,将最后的计算结果相加
卷积神经网络CNN(Convolutional Neural Network)
卷积神经网络CNN(Convolutional Neural Network)
输入为7×7×3,最后一维3表示图像颜色通道,需要注意的是输入的最后一维要和Filter的最后一维保持一致。Filter为3×3×3,那么这里的卷积核大小为3×3,对应输入矩阵中每3×3的大小进行一个区域选择。
计算方式为: 每一个对应位置相乘,最终结果相加,最后不要忘记加上偏置项。
卷积神经网络CNN(Convolutional Neural Network)
那么并不是卷积一次就完事了,而是可以进行多次卷积,得到若干张特征图,最后进行堆叠。
卷积神经网络CNN(Convolutional Neural Network)
图中首先左侧输入特征维度是32×32×3,经过6个不同的Filter,得到6个特征图进行堆叠;在经过10个不同的Filter,得到10个特征图进行堆叠,依次类推……
卷积神经网络CNN(Convolutional Neural Network)

(一)卷积层涉及的参数:

1. 滑动窗口步长
卷积神经网络CNN(Convolutional Neural Network)
从图中可以看出,不同的步长得到的特征图大小也不同。当步长较小时,相当于慢慢的提取特征,细粒度的提取特征,特征提取的较为丰富;当步长较大时,相当于大刀阔斧的提取特征,特征数目较少。

2. 卷积核尺寸
其实和滑动窗口的尺寸一样,当卷积核尺寸较小时,相当于慢慢的提取特征,细粒度的提取特征,特征提取的较为丰富;当卷积核尺寸较大时,相当于大刀阔斧的提取特征,特征数目较少。
在一般情况下, 滑动窗口选择1,卷积核尺寸为3×3.

3.边缘填充方法
在滑动窗口移动过程中,我们会发现,有些位置的值被多次计算,那么这些值会对最终的结果影响较大,这样会造成不公平的效果。
解决方法:zero-padding 经过观察发现,越靠近边缘位置的值计算重复越少,越靠近中心位置的值计算次数越多,因此可以在输入特征矩阵外再添加一圈0,使得原本边界的特征被利用的次数增多,在一定程度上弥补了边界信息缺失,边界特征提取不充分的问题。

那么为啥添加的是0 ,而不是其他值呢? 如果添加其他值则会再计算过程中对最终的结果产生影响。
卷积神经网络CNN(Convolutional Neural Network)
4.卷积核个数
卷积核个数取决于最终在计算过程中得到多少个特征图,10个特征图也就对应10个卷积核。

(二)卷积层的计算公式:

卷积神经网络CNN(Convolutional Neural Network)
这里需要注意的是边界填充为啥要乘2,原因是我们再输入的特征矩阵周围添加了一圈0,是上下左右都填充了,所以长度和宽度都扩大为原来的两倍

举个栗子:
如果输入数据是32×32×3的图像,用10个5×5×3的filter来进行卷积操作,指定步长为1,边界填充为2,最终输入的规模是?
利用公式:(32-5+2×2)/ 1 + 1 = 32 ,因此最终的输出规模为:32×32×10
此时我们可以发现:经过卷积操作后,特征并不一定缩小,可以保持特征图长度和宽度不变

(三)卷积参数共享:

用同样一个卷积核,对图中的每一个小区域进行特征提取。也就是说,对每一个区域进行特征提取时,卷积核中的参数不会发生改变。

如果输入数据依旧是32×32×3的图像,继续用10个5×5×3的filter来进行卷积操作,所需的权重参数个数有多少?
5×5×3 = 75 ,表示一个卷积核需要75个参数,10个卷积核共计750个参数,但每一个卷积核还有一个偏置参数 b ,因此最终只需要 750 + 10 = 760 个参数即可。

四、池化层的作用

在卷积层我们的想法是特征图中的特征越多越好,越多表示特征提取越细腻,能够得到的特征信息越多;但是并不是每一个特征都是有用的,因此池化层的作用就是将得到的特征图进行压缩。
卷积神经网络CNN(Convolutional Neural Network)
这里需要注意的是:压缩的是每一个特征矩阵的长和宽,并不会压缩特征个数。

压缩方法:最大池化
卷积神经网络CNN(Convolutional Neural Network)
过程是一步一步的移动滑动窗口,找到并取出每一个滑动窗口中的最大值。在池化层中,并没有涉及到任何的矩阵计算,只是进行矩阵筛选、压缩和过滤。

五、卷积神经网络的整体架构

通过观察图,我们发现了几个特点:

  1. 首先每一个卷积过后都连接一个Relu激活函数;
  2. 每两次卷积后进行一次池化操作;
  3. 所有的卷积和池化操作完成后进行全连接FC,
  4. 全连接层得到最终的分类结果。
    卷积神经网络CNN(Convolutional Neural Network)
    那么我们必须要思考了,卷积和池化操作完成后得到的是一个立体的三维特征图,那么如何进行分类操作呢?
    由于全连接层无法连接三维的特征图,因此需要将特征图拉成一维的特征向量。
    例如:图中最终进行的是5分类任务,假设卷积和池化操作完成后得到的是一个32×32×10的特征图,将其转换成长度为 10240(32×32×10)的特征向量,连接维度为[10240,5]的全连接层,最终将10240的特征转换为预测的5个类别的概率值。

小Tips: 在计算神经网络层数时,只有带参数计算的才能称为层,因此conv卷积层、FC全连接层带参数计算,上图中为7层卷积神经网络。
卷积神经网络CNN(Convolutional Neural Network)

六、经典的卷积神经网络

(一)ALEXNet

2012年ImageNet竞赛冠军
卷积神经网络CNN(Convolutional Neural Network)

(二)VGGNet(Visual Geometry Group Network)

2014年ILSVRC竞赛的第二名
卷积神经网络CNN(Convolutional Neural Network)
VGG的特点是:为了弥补池化层丢失的特征信息,每经过一次池化,将特征图的个数翻倍
同时VGG发现,卷积神经网络的层数并不是越深越好,当层数达到16层时比30层效果还要好。随着卷积层数的增加,并不是所有的层都能提取较好的特征,它是基于之前提取的特征之上进行卷积的,不能保证后面提取的一定比之前的效果好。

七、残差网络Resnet

卷积神经网络CNN(Convolutional Neural Network)
这是一张描述残差网络的经典图。x作为输入,经过两层网络weight layer,我们将这两层网络看成一个F(x),那么如果没有残差网络,我们可以直接输出F(x)。但是有了残差网络,就相当于将输入的x原封不动的拿到输出位置与F(x)进行相加操作,因此输出为F(x)+x。
其实残差网络的作用是可以让深度神经网络做的更深,并且效果至少不会比原来的差。为啥?
假设在上图中我们经过了两次卷积(weight layer),卷积的结果不一定是好的,那么如果最终输出是F(x),就会导致卷积效果变差。但是我们现在可以将卷积之前的x原封不动的拿过来和F(x)进行堆叠(相加操作),神经网络即使发现这两层卷积使得loss值变大,那么它会将这两层的权重参数学习为0,但我们还有x保底,也就是卷积之前的值,这样就保证了最终的效果不会变差。如果卷积效果好,那么毋庸置疑,皆大欢喜,直接相加。
卷积神经网络CNN(Convolutional Neural Network)
经过实验验证,加上残差网络后,堆叠的层数增多,错误率会下降。

八、感受野

什么是感受野:最后输出的值,能够感受到它是由前面的多少个数据参与计算得到的。
卷积神经网络CNN(Convolutional Neural Network)

如果堆叠3个3×3的卷积层,并且保持滑动窗口步长为1,其感受野为7×7;这与一个使用7×7的卷积核的结果是一样的,为啥要用3个3×3的小卷积层呢?
假设输入大小都是h×w×c,并且都使用c个卷积核(得到c个特征图),计算各自所需要的参数:
一个7×7的卷积核所需要的参数 : c × ( 7 × 7 × c ) = 49c2
三个3×3小卷积核所需要的参数 : 3 × c × ( 3 × 3 × c ) = 27c2
很明显,堆叠小的卷积核所需要的参数更少,并且卷积过程越多,特征提取也会更加细致,加入的非线性变换也随之增多,还不会增大权重参数的个数,这也是VGGnet的基本出发点,用小的卷积核来完成特征提取操作。文章来源地址https://www.toymoban.com/news/detail-440820.html

到了这里,关于卷积神经网络CNN(Convolutional Neural Network)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习4. 循环神经网络 – Recurrent Neural Network | RNN

    目录 循环神经网络 – Recurrent Neural Network | RNN 为什么需要 RNN ?独特价值是什么? RNN 的基本原理 RNN 的优化算法 RNN 到 LSTM – 长短期记忆网络 从 LSTM 到 GRU RNN 的应用和使用场景 总结 百度百科+维基百科 卷积神经网络和普通的算法大部分都是输入和输出的一一对应,也就是一

    2024年02月11日
    浏览(41)
  • 【深度学习笔记】6_2 循环神经网络RNN(recurrent neural network)

    注:本文为《动手学深度学习》开源内容,部分标注了个人理解,仅为个人学习记录,无抄袭搬运意图 上一节介绍的 n n n 元语法中,时间步 t t t 的词 w t w_t w t ​ 基于前面所有词的条件概率只考虑了最近时间步的 n − 1 n-1 n − 1 个词。如果要考虑比 t − ( n − 1 ) t-(n-1) t −

    2024年03月12日
    浏览(65)
  • CNN卷积神经网络

    一、 什么是CNN卷积神经网络 卷积神经网络由三部分组成:输入层、由n个卷积层和池化层的组合组成、全连结的多层感知机分类器。 深度学习的迅速发展,我们会在不同的应用场景会使用不同的神经网络,没有一个神经网络他能在任何场景下,效果都好,也没有说某一个算法

    2024年02月06日
    浏览(51)
  • 关于CNN卷积神经网络

    CNN代表卷积神经网络(Convolutional Neural Network) 它是一种深度学习算法,特别适用于处理图像和视频数据。CNN由多个 卷积层、池化层和全连接层 组成,通过学习图像或视频数据的特征来进行 分类、识别或检测任务 。与传统的全连接神经网络相比,CNN的 参数数量较少 ,能够

    2023年04月09日
    浏览(41)
  • 理解卷积神经网络(CNN)

    卷积神经网络(CNN)是一种专为处理具有类似网格结构的数据(如图像)而设计的深度学习架构。自从在图像处理和计算机视觉领域取得突破性成就以来,CNN已成为这些领域的核心技术之一。 CNN的起源与发展 CNN的概念最初是受到生物视觉感知机制的启发而提出的。早期的研

    2024年03月10日
    浏览(62)
  • 聊聊卷积神经网络CNN

    卷积神经网络(Convolutional Neural Network,CNN)是一种被广泛应用于图像识别、语音识别和自然语言处理等领域的深度学习模型。与RNN、Transformer模型组成AI的三大基石。 在卷积神经网络中,相比较普通的神经网络,增加了卷积层(Convolution)和池化层(Pooling)。其结构一般将会是如下

    2024年02月05日
    浏览(37)
  • 【人工智能】— 深度神经网络、卷积神经网络(CNN)、多卷积核、全连接、池化

    Pre-training + Fine-tuning Pre-training(预训练) : 监督逐层训练是多隐层网络训练的有效手段, 每次训练一层隐层结点, 训练时将上一层隐层结点的输出作为输入, 而本层隐结点的输出作为下一层隐结点的输入, 这称为”预训练”. Fine-tuning(微调) : 在预训练全部完成后, 再对整个网络进行

    2024年02月10日
    浏览(44)
  • 十、CNN卷积神经网络实战

    输入样本通道数4、期待输出样本通道数2、卷积核大小3×3 具体卷积层的构建可参考博文:八、卷积层 设定卷积层 torch.nn.Conv2d(in_channels=in_channel,out_channels=out_channel,kernel_size=kernel_size,padding=1,stride=1) 必要参数:输入样本通道数 in_channels 、输出样本通道数 out_channels 、卷积核大小

    2023年04月09日
    浏览(50)
  • 深度学习|CNN卷积神经网络

    在CNN没有出现前,图像对人工智能来说非常难处理。 主要原因: 图像要处理的数据量太大了。图像由像素组成,每个像素又由不同颜色组成,一张1000×1000彩色RGB图像需要的参数是1000×1000×3,需要三百万参数左右,普通神经网络会全用全连接方法来学习整幅图像上的特征,处

    2024年02月11日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包