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(函数风格的实现):