文章目录
- 1.卷积与反卷积定义
- 2.对应的函数
- 3.对应的作用区别
- 4.总结
1.卷积与反卷积定义
卷积:对图像矩阵进行扫描,寻找到图像的特征信息以及轮廓,纹理以及进一步的语义信息。
**反卷积:**对卷积后的图像进行反向操作,做逆向操作,还原图像到之前的状态。
2.对应的函数
卷积:nn.Conv(…)
torch.nn.Conv2d( in_channels, #输入数据的通道数(如彩色图片,一般为3)out_channels, #输出数据的通道数(就是我想让输出多少通道,就设置为多少)kernel_size, #卷积核的尺寸(如(3,2),3与(3,3)等同)stride = 1, #卷积步长,就是卷积操作时每次移动的格子数padding = 0, #原图周围需要填充的格子行(列)数,无填充的话卷积到边缘会直接忽略该边缘dilation = 1, #空洞卷积的空洞指数,一般默认为1即可groups = 1, #分组卷积的组数,一般默认设置为1,不用管bias = True, #卷积偏置,一般设置为False,True的话可以增加模型的泛化能力padding_mode = 'zeros' #设置边缘填充值为0,或别的数,一般都默认设置为0)
反卷积:nn.ConvTranspose2d(…)
torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True, dilation=1, padding_mode='zeros') # by default
3.对应的作用区别
下面的一段代码可以看到实际上两个函数是逆运算关系,反卷积实际上是还原卷积操作
# data.shape: batch * c * w * h
cov = torch.nn.Conv2d(c, y, k, s, p)
cov_trans = torch.nn.ConvTranspose2d(y, c, k, s, p)
data1 = cov(data) # data1.shape: batch * y * w1 * h1
data2 = cov_trans(data1) # data2.shape: batch * y * w * h
# 可以看到最后又变成了原来的大小。
仔细分析
基础知识:各种类型卷积前后图像尺寸分析
卷积后图像与原始图像联系:
通过笔算,可以推导出卷积和反卷积是可以还原为卷积前的状态的,也就是说,我们可以在卷积后的图像还原为之前的状态,从而实现对图像的操作是可控的。
4.总结
所有的逻辑运算,均需要我们一步步去推导,否则学完一遍,还是啥都不会,加油,人工智能小伙伴。近期再发文章,所以更新的少了,后期一定多多发文,谢谢大家的支持,另外,马上要考研了,祝愿考研人如愿上岸,金榜题名~~~~
卷积