什么是卷积?
卷积是指在滑动中提取特征的过程,可以形象地理解为用放大镜把每步都放大并且拍下来,再把拍下来的图片拼接成一个新的大图片的过程。
一、普通卷积**:(“卷积”就是“加权求和”)**
更详细请看笔者的博文:矩阵乘法实现卷积运算_caip12999203000的博客-CSDN博客_矩阵乘法实现卷积
**1.**以2D卷积为例,2D卷积是一个相当简单的操作
我们先从一个小小的权重矩阵,也就是 卷积核(kernel) 开始,让它逐步在二维输入数据上“扫描”。卷积核“滑动”的同时,计算权重矩阵和扫描所得的数据矩阵的乘积,然后把结果汇总成一个输出像素。
这里原理上使用的是滑动窗口,但也可以有更多高效的方法,例如:笔者的另外一篇文章,使用的是矩阵乘法实现的卷积运算。
**2.**卷积后的尺寸大小转换公式
(其中W1为输入矩阵大小,K为卷积核大小,P为向外填充的参数,S为步长,W2为输出的矩阵大小)
**3.**功能
特征图大小不变或缩小。根据公式通过调整P和S参数可实现特征图大小不变以及缩小。
4**.各个指标比较(参数量、计算量、感受野)**
(输入的通道数为M,尺寸为DF x DF ,输出通道数为N,卷积核大小为DK x DK ,忽略偏执b。)
**5.**代码实现
Pytorch**(参考)**
import torch.nn as nn
import torch
# 输入值
im = torch.randn(1, 1, 5, 5)
# 普通卷积使用
c = nn.Conv2d(1, 1, kernel_size=2, stride=2, padding=1)
output = c(im)
# 输出
print("输入:\n",im.shape)
print("输出:\n",output.shape)
print("卷积核参数:\n",list(c.parameters()))
结果展示: