CNN中卷积层参数量与输出特征图(feature map)尺寸的计算

https://blog.csdn.net/gaishi_hero/article/details/81512404
https://blog.csdn.net/xuefengyang666/article/details/94734491
https://blog.csdn.net/Bruce_0712/article/details/80293027
在这里插入图片描述
在这里插入图片描述

卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。

在这里插入图片描述

卷积神经网络的概念示范:输入图像通过和三个可训练的滤波器和可加偏置进行卷积,滤波过程如图一,卷积后在C1层产生三个特征映射图,然后特征映射图中每组的四个像素再进行求和,加权值,加偏置,通过一个Sigmoid函数得到三个S2层的特征映射图。这些映射图再进过滤波得到C3层。这个层级结构再和S2一样产生S4。最终,这些像素值被光栅化,并连接成一个向量输入到传统的神经网络,得到输出。
每个层有多个Feature Map,每个Feature Map通过一种卷积滤波器提取输入的一种特征,然后每个Feature Map有多个神经元。
CNN一个牛逼的地方就在于通过感受野和权值共享减少了神经网络需要训练的参数的个数,所谓权值共享就是同一个Feature Map中神经元权值共享,该Feature Map中的所有神经元使用同一个权值。因此参数个数与神经元的个数无关,只与卷积核的大小及Feature Map的个数相关。但是共有多少个连接个数就与神经元的个数相关了,神经元的个数也就是特征图的大小。
下面以最经典的LeNet-5例子来逐层分析各层的参数及连接个数。

在这里插入图片描述
C1层是一个卷积层,由6个特征图Feature Map构成。特征图中每个神经元与输入为55的邻域相连。特征图的大小为2828,这样能防止输入的连接掉到边界之外(32-5+1=28)。C1有156个可训练参数(每个滤波器55=25个unit参数和一个bias参数,一共6个滤波器,共(55+1)6=156个参数),共156(2828)=122,304个连接。
S2层是一个下采样层,有6个14
14的特征图。特征图中的每个单元与C1中相对应特征图的22邻域相连接。S2层每个单元的4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。每个单元的22感受野并不重叠,因此S2中每个特征图的大小是C1中特征图大小的1/4(行和列各1/2)。S2层有12(6*(1+1)=12)个可训练参数和5880(1414(22+1)6=5880)个连接。
C3层也是一个卷积层,它同样通过5x5的卷积核去卷积层S2,然后得到的特征map就只有10x10个神经元,但是它有16种不同的卷积核,所以就存在16个特征map了。 C3中每个特征图由S2中所有6个或者几个特征map组合而成。为什么不把S2中的每个特征图连接到每个C3的特征图呢?原因有2点。第一,不完全的连接机制将连接的数量保持在合理的范围内。第二,也是最重要的,其破坏了网络的对称性。由于不同的特征图有不同的输入,所以迫使他们抽取不同的特征(希望是互补的)。
例如,存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入。这样C3层有1516(6
(3
25+1)+6*(425+1)+3(425+1)+(256+1)=1516)个可训练参数和151600(10101516=151600)个连接。
S4层是一个下采样层,由16个55大小的特征图构成。特征图中的每个单元与C3中相应特征图的22邻域相连接,跟C1和S2之间的连接一样。S4层有32个可训练参数(每个特征图1个因子和一个偏置16*(1+1)=32)和2000(16*(22+1)55=2000)个连接。
C5层是一个卷积层,有120个特征图。每个单元与S4层的全部16个单元的5
5邻域相连。由于S4层特征图的大小也为55(同滤波器一样),故C5特征图的大小为11(5-5+1=1):这构成了S4和C5之间的全连接。之所以仍将C5标示为卷积层而非全相联层,是因为如果LeNet-5的输入变大,而其他的保持不变,那么此时特征图的维数就会比11大。C5层有48120(120(1655+1)=48120由于与全部16个单元相连,故只加一个偏置)个可训练连接。
F6层有84个单元(之所以选这个数字的原因来自于输出层的设计),与C5层全相连。有10164(84*(120*(1*1)+1)=10164)个可训练参数。如同经典神经网络,F6层计算输入向量和权重向量之间的点积,再加上一个偏置。然后将其传递给sigmoid函数产生单元i的一个状态。
最后,输出层由欧式径向基函数(Euclidean Radial Basis Function)单元组成,每类一个单元,每个有84个输入。
在这里插入图片描述
图:卷积和子采样过程:卷积过程包括:用一个可训练的滤波器fx去卷积一个输入的图像(第一阶段是输入的图像,后面的阶段就是卷积特征map了),然后加一个偏置bx,得到卷积层Cx。子采样过程包括:每邻域四个像素求和变为一个像素,然后通过标量Wx+1加权,再增加偏置bx+1,然后通过一个sigmoid激活函数,产生一个大概缩小四倍的特征映射图Sx+1。

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 卷积神经网络(Convolutional Neural Networks, CNNs)是一种被广泛应用于像、语音和自然语言处理等领域的深度学习模型。卷积层CNN的核心层,用于提取输入数据的特征。以下是卷积层相关的理论知识: ### 卷积操作 卷积层的卷积操作是指将输入数据和一组卷积核(也称为滤波器或过滤器)进行卷积计算,得到输出特征的过程。假设输入数据为一个 $n \times n$ 的二维矩阵 $\mathbf{X}$,卷积核为一个 $k \times k$ 的二维矩阵 $\mathbf{K}$,则卷积操作的输出特征 $\mathbf{Y}$ 可以表示为: $$ \mathbf{Y}_{i,j} = \sum_{m=1}^{k} \sum_{n=1}^{k} \mathbf{X}_{i-m+\lfloor \frac{k}{2} \rfloor,j-n+\lfloor \frac{k}{2} \rfloor} \cdot \mathbf{K}_{m,n} $$ 其,$\lfloor \cdot \rfloor$ 表示向下取整操作。可以将上式的 $\lfloor \frac{k}{2} \rfloor$ 看作是填充(padding)操作的一种,用于保持输入数据和输出特征的大小相同。卷积操作的步长(stride)表示卷积核在输入数据上移动的距离,通常为 1。当步长大于 1 时,可以通过调整填充操作来保持输出特征的大小。 ### 卷积核 卷积核是卷积层的可学习参数,用于提取输入数据的特征。卷积核的大小通常比输入数据小,因为较小的卷积核可以提取更局部的特征。在训练过程,卷积核的权重会被不断调整以最大化输出特征与标签数据之间的相似度。 ### 激活函数 卷积层输出通常需要通过激活函数进行非线性变换,以增强模型的表达能力。常见的激活函数包括 Sigmoid 函数、ReLU 函数、Leaky ReLU 函数等。其,ReLU 函数是目前最常用的激活函数,因为它可以有效地避免梯度消失问题,加速模型的训练过程。 ### 池化操作 池化操作是卷积神经网络常用的一种降采样操作,用于减小特征的大小,提高模型的鲁棒性。常见的池化操作包 ### 回答2: 卷积神经网络(Convolutional Neural Network,CNN)是一种主要用于像处理和模式识别的深度学习算法。卷积层CNN的核心组成部分之一,其原理是模拟人类视觉系统的局部感知和特征提取机制。 卷积层通过卷积操作来提取像的局部特征。卷积操作主要包括两个步骤:卷积运算和激活函数。卷积运算使用一个可学习的滤波器(也称为卷积核)对输入像进行滑动窗口式的局部计算,通过计算输入与滤波器的点乘和求和来得到输出。滤波器的参数是通过网络训练得到的,它可以捕捉不同的特征,如边缘、纹理等。激活函数对卷积运算的结果进行非线性变换,增加网络的表达能力。 卷积层还包括一些参数,如步长(stride)、填充(padding)和输出通道数。步长决定滑动窗口在输入上的移动距离,影响输出的大小;填充是在输入的边界上添加额外的像素,可以保持输入输出尺寸一致,并减小信息丢失;输出通道数是指卷积层滤波器(卷积核)的数量,每个滤波器提取一种特征,多个滤波器可以提取不同的特征卷积层具有多个优势。首先,卷积运算的参数共享机制减少了网络的参数量,提高了计算效率。其次,卷积操作保持了输入像的局部结构,提取了重要的空间特征。此外,多个卷积层可以逐级提取像的高层次抽象特征。 总之,卷积层是卷积神经网络非常关键的一层,通过卷积运算和激活函数来提取像的局部特征,具有参数共享、保持局部结构和逐级提取特征等优势。在实际应用卷积层通常与其他层(如池化层、全连接层)结合使用,构建起完整的卷积神经网络,实现像的高效处理和模式识别。 ### 回答3: 卷积神经网络(Convolutional Neural Network,CNN)是一种广泛应用于像和语音处理领域的深度学习模型。卷积层CNN最重要的组成部分之一。 卷积层的主要作用是提取输入数据特征。它通过卷积操作将输入数据与一组可学习的卷积核进行卷积运算,得到一系列特征Feature Map)。每个特征代表着不同的特征,例如边缘、纹理、形状等。 卷积操作是一种逐元素的乘法和加法运算。假设输入数据为二维矩阵A,卷积核为二维矩阵B,则卷积操作可以表示为C[i, j] = sum(A[x, y] * B[i-x, j-y]),其sum表示求和,(i, j)为特征的位置,(x, y)为卷积核的位置。 在卷积层,可以使用多个卷积核来提取不同的特征。每个卷积核都有自己的权重参数,通过反向传播算法进行优化。卷积核的大小和数量是可以调整的超参数,根据任务的需求来确定。 卷积层还包括激活函数和池化操作。激活函数引入了非线性变换,增加了神经网络的表达能力。常用的激活函数有ReLU、Sigmoid和Tanh等。池化操作用于减小特征尺寸,减少计算量,并提取最显著的特征。常用的池化操作有最大池化和平均池化。 卷积神经网络的卷积层具有以下几个优势: 1. 参数共享:卷积层参数在整个输入数据是共享的,使得网络更加紧凑,减少了需要学习的参数数量,提高了模型的训练效率。 2. 局部感知性:卷积层通过滑动窗口的方式进行卷积操作,可以局部感知输入数据的特征,更加适用于处理像和语音等具有局部相关性的数据。 3. 高效计算:卷积操作可以通过傅里叶变换等快速算法进行计算,降低了计算复杂度。 总之,卷积层是卷积神经网络的核心组件之一,它通过卷积操作提取输入数据的特征,具有参数共享、局部感知性和高效计算等优势。它的设计使得CNN像处理和语音识别等领域取得了很多成功应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值