P2.转置卷积Transposed Convolution
1.作用:上采样
转置卷积不是卷积的逆运算
转置卷积也是卷积
2.转置卷积运算步骤
在输入特征图元素间填充s-1行、列0
在输入特征图四周填充k-p-1行、列0
将卷积核参数上下/左右翻转
做正常卷积运算(填充0:不填充,步距1:不同于上面的s,上面的s是转置卷积的s)
3.实例讲解
输入feature map 2x2
转置卷积 s=1,p=0,k=3
4.torch.nn.ConvTranspose2d参数
in_channels输入特征层通道
out_channels输出特征层通道
kernel_size卷积核尺寸
stride步长,默认为1
padding填充,默认为0
output_padding不常用,默认为0
groups是否采用了组卷积,默认为1,普通卷积。若采用组卷积,设置为对应的组数即可
bias偏置,默认为True,使用
dilation是否使用膨胀卷积(空洞卷积),默认为1,普通卷积
dilation=1,output_padding=0
5.普通卷积计算
6.另一种卷积计算方式
将卷积核转化为等效矩阵
等效矩阵:构造与输入feature map同样大小的0矩阵,卷积核每滑动一步就构造一个等效矩阵
将等效矩阵与输入feature map对应位置的数相乘再相加
将输入feature map展平成行向量
将等效矩阵展平成列向量
将这两个矩阵相乘得到输出特征层展平的结果
已知C和O,不能得到I,因为C不是方阵,不存在逆矩阵,卷积是不可逆的
但是可以得到与输入矩阵相同大小的矩阵,两边右侧同时乘以C的转置
将P进行reshape处理得到一个4x4的特征层
7.逆向操作
将O还原成2x2的特征层矩阵
C的转置每一列都写成2x2的矩阵
将这两个矩阵对应位置相乘再相加
得到P
将 2x2的矩阵对应位置相乘再相加,得到的每一个结果与绿色卷积核在输出特征层矩阵卷积操作结果相同
将绿色卷积核和原来的卷积核比较发现,原来的卷积核进行上下左右翻转得到绿色卷积核