CNN 系列 (一) 详解 卷积层 和 池化层

作者&投稿:汗良 (若有异议请与网页底部的电邮联系)
~

1998年,LeNet的诞生标志着CNN的雏形出现。自ImageNet和AlexNet在2010年确立大数据与神经网络在计算机视觉领域的统治地位后,一系列里程碑式的模型如VGG、NiN、InceptionNet和ResNet、EfficientNet相继涌现。尽管ViT在图像分类上稍占优势,但在生成任务中,扩散模型与U-Net的组合占据了主导,而U-Net正是基于CNN架构。图片数据的特点是像素矩阵和丰富的通道描述,CNN的核心技术正是通过卷积和池化进行处理。


卷积层与滑动窗口的深度解析:</

CNN能够处理多维度样本,其基础是卷积和池化操作,它们以滑动窗口的形式在数据上进行。滑动窗口在众多领域广泛应用,CNN中的卷积窗口则有二维和一维之分。理解一维滑动窗口尤为关键,例如,PyTorch为我们提供了针对不同维度的卷积函数。


一维滑动窗口如同一个指针,从向量首端开始,每次移动固定步长,捕获一段子向量,直至无法继续。如向量[1.1, 2.2, 3.3, 4.4, 5.5],窗口大小为3,我们能得到3个子向量:[1.1, 2.2, 3.3], [2.2, 3.3, 4.4], [3.3, 4.4, 5.5]。在word2vec的skip-gram和CBOW模型中,滑窗操作会选择指针右侧的元素作为背景词,背景词数量会根据上下文灵活调整。


设计CNN时,子向量数量必须与向量维度相匹配,这就需要通过填充(padding)来调整边界。常见的填充模式包括valid padding(无填充)、same padding(等距填充)和full padding(最大化子向量数量),每种方式都有其独特的用途。


步长(stride)允许指针跳跃式移动,如向量[1.1, 2.2, 3.3, 4.4, 5.5],窗口3,步长2,会生成2个子向量。向量长度、窗口大小和步长共同决定了子向量的总数。


理解向量的子向量生成规律至关重要:长度7的向量产生3个子向量,遵循的索引规律可以通过公式来描述。在实际操作中,要考虑步长对索引的影响,通过调整指针位置来简化计算。


当向量维度是子向量数的倍数,考虑填充后,我们通常有: 。值得注意的是,same和full padding通常不与stride同时使用。


空洞卷积(dilation)通过增加指针的跳步,扩展子向量的覆盖范围。以滑动步长记为 ,取元素的方式为 。让我们通过实例来深入理解。


卷积层在图像处理中扮演着关键角色,它将二维输入映射为全连接层,但计算复杂度更高。为了保持位置敏感性,理想情况下,图像中的像素块无论位置如何变化,特征向量应保持不变,即具有平移不变性。


卷积层本质上是互相关运算的等价实现,直观地说,就是窗口点乘。在图像分析中,每个二维滑动窗口被称为感受野,它在特征图中形成了接收场。互相关操作处理单通道图片矩阵,通过窗口滑动、点乘和排列生成特征图矩阵,保持子向量维度的一致性。


在多通道图片中,每个通道独立处理后合并。通过多个卷积核的多次互相关运算,形成多通道特征图矩阵,构建出三维张量网络。卷积层作为全连接层的变体,它处理的是二维输入和输出,通过叠加卷积层构建出复杂的神经网络结构。


卷积层的核心是感受野,每个kernel对应一个线性函数,输出通道数代表函数的多样性。每个感受野都是张量,每个自变量对应一个线性函数。卷积层参数的数量与kernel尺寸成正比,之后通常需要接上激活层。它们捕捉局部位置信息,虽具有平移不变性,但在旋转和缩放方面则有所欠缺。特殊的卷积类型如1x1 Conv、基于patch的Conv和分组卷积,它们通过减小参数和计算量,提供了不同的功能。池化层则通过单一值来概括一组数据,常用的方法有平均池化和最大池化,它们分别反映了局部和全局的信息。


池化层同样采用二维滑动窗口,参数包括kernel、stride和padding。最大池化通常填充值为0,平均池化则通过count_include_pad来决定是否包含填充。池化窗口的大小不必与感受野一致,PyTorch提供了额外的处理方式。池化层不涉及多通道融合,通道数保持不变。经典设计中,池化层通常在卷积层之后进行下采样,最大池化是最常见的选择,全局平均池化则常用于全连接层之前。池化的作用主要在于缓解位置敏感性,但其解释往往不够深入。接下来的文章将继续探讨CNN的更多内容,如卷积的可视化、经典网络结构以及目标检测技术等。




龙川县19431896067: 深度学习中的卷积层怎么做,有什么作用 -
镡吉亚叶: 那么可以两个设备同时并行.如果cpu也支持,前提是显卡需要支持opencl技术可以使用opencl编写gpu平台kernel代码并行加速计算量

龙川县19431896067: 层有什么用处,以及是如何实现的 -
镡吉亚叶: 1.卷积神经网络简介 卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现.[1] 它包括卷积层(alternating convolutional layer)和池...

龙川县19431896067: 什么是卷积神经网络?为什么它们很重要 -
镡吉亚叶: 卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现.[1] 它包括卷积层(alternating convolutional layer)和池层(pooling layer). ...

龙川县19431896067: 如何理解卷积神经网络中的权值共享 -
镡吉亚叶: 简单谈谈自己的理解吧.池化:把很多数据用最大值或者平均值代替.目的是降低数据量.卷积:把数据通过一个卷积核变化成特征,便于后面的分离.计算方式与信号系统中的相同.

龙川县19431896067: CNN神经网络给图像分类(Matlab)
镡吉亚叶: 1. 你要看你的图像是什么.如果是彩色数字,先转成灰度.用MNIST训练网络.如果是各种主题,用彩色的imageNET训练.如果你的数据量大到足以与数据集媲美,那么直接用你的数据训练网络即可.在流行的数据集上训练完,你需要固定卷...

龙川县19431896067: cnn一定具有卷积层和pooling层吗 -
镡吉亚叶: pooling 理论在于,图像中相邻位置的像素是相关的.对一幅图像每隔一行采样,得到的结果依然能看.经过一层卷积以后,输入的图像尺寸变化不大,只是缩小了卷积核-1.根据相邻数据的相关性,在每个nxn区域内,一般2x2,用一个数代表原来的4个数,这样能把数据缩小4倍,同时又不会损失太多信息.一副24*24的图像.用5*5卷积核卷积,结果是20*20(四周各-2),经过2*2池化,变成10*10.通过池化,数据规模进一步缩小,训练所需时间从而降低.

龙川县19431896067: 假设面试官什么都不懂,详细解释cnn的原理 -
镡吉亚叶: 卷积神经网络是近年发展起来,并引起广泛重视的一种高效识别方法.20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网...

龙川县19431896067: CNN中的卷积和池化的边界问题一般怎么处理 -
镡吉亚叶: 有两种方式1. 不处理边界.5*5的src通过3*3的卷积核,步长1时,就变成了3*3的output2. 在边界补0.5*5的src,补1圈0变成7*7,通过3*3的卷积核,步长1时,就变成了5*5的output,即原尺寸 通常卷积可采用1,2.但是池化一般只采用1

龙川县19431896067: python keras CNN训练文字的一位特征向量怎么构造卷积层 -
镡吉亚叶: This example demonstrates the use of Convolution1D for text classification.这个例子应该能帮到你 不过分类是 binary 的 要dense 层自己改成 softmax

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网