首页天道酬勤,

,

张世龙 05-05 23:23 121次浏览

一.卷积层定义和计算1 .卷积层定义

卷积层 = 感受野 + 权值共享

每个感受域内都有多个过滤器,每个过滤器的参数设置不同(一般是在随机初始化之后神经网络自主学习获得)。 每个滤波器都负责检测出现在感知域中的特征,但是相同的特征可能在图像的其他位置重叠出现,因此在相同图像的不同区域中,为了实现滤波器的有效复用和参数量的减少

2 .卷积层计算

假定输入的图像使用64个过滤器组,其中通道=3,H x W=6 x 6的彩色图像(3,6,6 ),即通道=3,kernel size=3 x 3,Padddize )

其中,Hi、Hk分别表示输入图像的高度和卷积核的高度,即使将高度置换为宽格式也不会发生变化。 s表示“步数”,p表示“填充”。 根据上面的示例,赋值表达式计算如下:

这里故意取了不能整除的数。 因为很多博客只是列举了可以整除的整数解的情况,而实际遇到的往往不是整数。 查看pytorch的源代码,有关该部分的处理可以整除为下(左),即采用2.52。 其他框架也应该相似。 因为总共有64个不同的卷积核,所以经过卷积的输出为[ 64,2,2 ]。

另外,还有一点需要注意的是,卷积运算实际上是将卷积内核和图像的某个区域(感受域)进行矩阵的点积运算(将elementwise product对应要素相乘后相加),但每个卷积内核在这里,有容易被忽略但非常重要的一点。 这意味着每个卷积内核对图像的某个区域的卷积操作在该图像的深度方向上同时执行。 也就是说,在上述示例中,当具有三个通道的彩色图像的区域和卷积内核执行卷积操作时,三个通道的图像信息同时与一个三个通道的卷积内核点积,并且三个通道的卷积结果相加,从而获得一个卷积内核的计算结果因为总共有64个卷积核心,所以输出结果的通道数为64个。 也就是说,卷积层输出结果的通道数仅取决于卷积核心的数量,而与输入图像的通道数无关。

(注意:同一卷积内核的三个通道的参数设置通常不同。 )

关于二.池化层池化层,已知用于实现降维和参数量削减。 但是,可能忽略的是,池化层和卷积层的最大区别在于,池化层没有参数,而且池化层和输入图像(在某种意义上也可以看作是卷积层中得到的特征映射)的通道数不变,因此,池化层和卷积层的通道数也不变由于只有“大小”(kernel size )和“步数”(stride )定义,因此在pyttide中,池层输出图像大小的计算公式与卷积层相同。

参考资料

(强推)李宏毅2021春季机器学习课程_哔哩哔哩_bilibili

卷积神经网络中的通道(channel ) _Medlen-CSDN博客_如何理解卷积神经网络通道

,