卷积网络和卷积计算

2019-03-08  本文已影响0人  cy247706243

矩阵乘法和卷积乘法区别:

卷积的乘法和矩阵的乘法不一样,卷积的求和相当于加权求和,也可以称为加权叠加,矩阵相乘是将一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。

卷积乘法示例:

             3 * 3 的像素区域R与卷积核G的卷积运算:

              R5(中心像素)=R1G1 +R2G2 + R3G3 + R4G4 + R5G5 + R6G6 + R7G7 + R8G8 + R9G9

矩阵相乘示例:

多通道卷积过程

有颜色的RGB图像,会包含三个相同大小的图层,这时对应的滤波器也要变成三层,卷积核大小为K*K,由于处理的图片是D通道的,因此卷积核其实也就是K*K*D大小的,因此,对于RGB三通道图像,在指定kernel_size的前提下,真正的卷积核大小是kernel_size*kernel_size*3。

对于D通道图像的各通道而言,是在每个通道上分别执行二维卷积,然后将D个通道加起来,得到该位置的二维卷积输出,对于RGB三通道图像而言,就是在R,G,B三个通道上分别使用对应的每个通道上的kernel_size*kernel_size大小的核去卷积每个通道上的W*H的图像,然后将三个通道卷积得到的输出相加,得到一个二维卷积输出结果。因此,若有M个卷积核,可得到M个二维卷积输出结果,

此动态图帮助了解多通道卷积运算。

所以,理解卷积核时,不能把K*K的kernel_size看成一个二维矩阵,对于每一个kernel_size,它的维度和要处理的图片的通道数是相等的,它的个数决定了输出特征图的维度(通道数).

比如,torch的卷积函数conv=torch.nn.Conv2d(1,8,(2,3))。Conv2d的参数

[channels,output, height_2, width_2 ]其中,channels为通道数,需要和将要进行卷积运算的特征图的通道数保持一致。output 输出的深度,即输出的特征图的通道数。height_2和width_2分别表示过滤器filter的宽和高,如果是Conv2d(1,8,3),则表示卷积核的尺寸为3×3。

在卷积运算时,如果滤波器超出了图像框,一般的操作是不进行运算。所以为了防止边缘信息丢失,会进行Padding操作,意思是在卷积之前,在原图像边缘上加入一层像素(也可以多层),一般也叫做补零(因为大多数时候我们添加的元素都是0)。卷积的意义:进行一次特征“浓缩”,用另一个意思来讲,就是把它抽象化。最后经过很多次的抽象化,你会将原始的矩阵变成一个 1 维乘 1 维的矩阵,这就是一个数字(变成了可以让分类器处理的概率数字)

所以,如上图所示。卷积运算一般不会改变特征图的长和宽(padding情况下),要实现特征图不断的缩小,最后实现1×1×1000。需要max polling(最大池化操作)。

卷积运算时:无padding输出特征图w-2,h-2,有padding保持不变。

池化运算是:设输入大小W×W,核大小F,步长S,padding大小P,输出大小N×N。则N为:

N=W−F+2∗PS+1N=SW−F+2∗P​+1

上一篇下一篇

猜你喜欢

热点阅读