【关于神经网络的学习】
【参考】:卷积核filter和kernal的区别 - 一杯明月 - 博客园 (cnblogs.com)
【参考】:(1条消息) 卷积神经网络的卷积核(kernel)、输入尺寸(input)、步长(stride)、填充(padding)关系_MAR-Sky的博客-CSDN博客_padding stride 卷积核
卷积使用“kernel”从输入图像中提取某些“特征”。kernel是一个矩阵,可在图像上滑动并与输入相乘,从而以某种我们期望的方式增强输出
kernel是权重矩阵,将权重矩阵与输入相乘以提取相关特征。卷积名称就是kernel矩阵的维数。例如,2D卷积的kernel矩阵就是2D矩阵。
但是,filter是多个kernel的串联,每个kernel分配给输入的特定通道。filter总是比kernel大一维。例如,在2D卷积中,filter是3D矩阵(本质上是2D矩阵(即kernel)的串联)。因此,对于具有kernel尺寸h * w和输入通道k的CNN层,filter尺寸为k * h * w。
一个普通的卷积层实际上由多个这样的filter组成。为了简化下面的讨论,除非另有说明,否则假定仅存在一个filter,因为所有filter都会重复相同的操作。
卷积核(kernel):用于对输入图像进行共享权值的遍历;如果将图像每一个图像的每一个像素作为卷积输入层的元素,那么卷积核就相当与每个输入的权值,且有卷积核大小的一组输入使用同一组权值。例如,一个图像是99大小,卷积核是33;则输入是81个,共享权值是9个一组。
步长(stride):卷积核是在图片上移动后遍历每一个像素,每次移动的大小就是步长stride
填充(padding):是为了满足输出的图像的维度要求,最终图像的输出宽度会=原来输出宽度+2padding,因为是周围填充
字符含义:i:输入的宽度,k:卷积核的宽度,p:单边填充宽度,o:输出宽度,s:步长
padding:在输入特征图的每一边添加一定数目的行列,使得输出和输入的特征图的尺寸相同。
为什么要设置padding:
如果没有padding,每次进行卷积后,原始图像的尺寸就会越来越小,所以没有办法设计层数足够多的深度神经网络。
希望每个输入特征图的每一块都能作为卷积窗口的中心,防止丢失图像边缘信息。
卷积核尺寸通常选择奇数的原因:
padding=(size_filter−1)/ 2
channel通道
在只有一个通道的情况下,“卷积核”就相当于“filter”,这两个概念是可以互换的。但在一般情况下,它们是两个完全不同的概念。每个“filter”实际上恰好是“卷积核”的一个集合,在当前层,每个通道都对应一个卷积核,且这个卷积核是独一无二的。
卷积过程中,输入层有多少个通道,filter就有多少个通道。
即:某一层filter的通道数 = 上一层特征图的通道数。
一般的图像都是三通道的,所以卷积核也应该为三个通道。比如对于32x32x3的图像,使用一个5x5x3的卷积核,最终会得到一个28x28x1的特征图。
但是filter的数量任意的,filter的数量决定了卷积后特征图的数量。
即:某一层输出特征图的通道数 = 当前层filter的个数
【【参考学习】】:(1条消息) CNN卷积神经网络中的stride、padding、channel以及特征图尺寸的计算_算了没办法的博客-CSDN博客_神经网络stride
例:一个尺寸 a*a 的特征图,经过 b*b 的卷积层,步幅(stride)=c,填充(padding)=d,请计算出输出的特征图尺寸?
例:输入4*4,卷积核3*3,stride = 1,padding = 0
输出尺寸 = (4-3+0)/1 + 1 = 2
后面用到再补充学习!!!