22-1:卷积神经网络-卷积(convolution)

1:卷积

卷积操作在信号处理中的定义

 故卷积操作:对应单元元素相乘再相加

(1)卷积核

(1.1)锐化卷积核

 

 (1.2)模糊卷积核

 (1.3)边缘检测

2:卷积神经网络

(2.1)卷积操作

 

 【注】

Kernel_channels:卷积核通道,表示使用的卷积核的种类个数

Input_channels:输入通道,如果时输入为图片:彩色Input_channels=3,灰色=1.

Kernel_size表示卷积和的shape大小例如:3*3

stride:表示移动的步长

padding:表示填充的行或列数:如果左右都填充2列,则等于2。

 (2.2)Multi-Kernel多个卷积核

 【注】

x:[b,3,28,28]中第1,2,3,4维度表示图片的数量、图片的channels即RGB三个通道、图片的大小(长宽)

one k:[3,3,3]中的1,2,3维度分别表示:与x中的2维度的大小相等且含义相对应(也即代表map数量)、2,3维度表示卷积核的大小(kernel_size)

multi-k[16,3,3,3]中的1,2,3维度分别表示卷积核的种类数量(Kernel_channel)、2维度表示与one k中的维度表示相同

 bias:[16]其为偏置:1维度与multi-k中的第一维度对应,值相等。

out:[b,16,28,28]中的维度表示:1维度表示图片的刷数量、2维度表示卷积核的种类数量(Kernel_channel)、3,4维度表示图片的大小

[注]multi-k:可以用weight、Filter、kernel表示

[注]每一种卷积核在每一个map上(等于x第2维度的大小:也即是图片对应的3个通道)卷积操作之后(对应相乘再相加),生成的map再进行对应相加,生成一种卷积核对应生成的一个最终的map。(如:最后的两张绿色map)

例子:邮政编码识别时的一个网络:LeNet-5

 (2.3)pytorch实现一个二维图片的卷积运算

方法1(类风格的实现):nn,Conv2d

[注]nn.Conv2d(pa1,pa2)pa1表示input的channel(假如输入的是一张彩色图片,channel=3),pa2表示kernel(卷积核)种类的数量,kernel_size表示卷积核的大小,stride表示步长,padding表示左右两侧需要填充的列数。

 [注]首先使用nn.Conv2D()实例化一个卷积层,然后调用类的实例化layer()完成前向传播(这里不推荐直接调用forward()方法)。

[注]之所以推荐使用类的实例化layer(),是因为会先调用hooks,然后调用forward不仅可以达到目的,还可以完成pytorch自带的功能建设。

 [注]通过实例化的类,我们可以查看其内部的参数weight,bias。由于需要迫使分类,故参数w和b需要具有梯度信息,才能实现更新,故被自动设置为具有梯度。

方法2(函数风格的实现):

原文地址:https://www.cnblogs.com/jiafeng1996/p/15095894.html