反卷积原理与参数设置 ConvTranspose2d

参考文献:
ConvTranspose2d原理,深度网络如何进行上采样?
PyTorch中 nn.Conv2d与nn.ConvTranspose2d函数的用法

反卷积的具体过程和原理在引文《》中说的很清楚了。
这里着重说一下反卷积参数output_padding:输出边补充0的个数,高宽都增加output_padding。

即如果没有使用output_padding,则输出特征图的边长为:
(Height−1)∗Stride−2∗padding+Size
采用 output_padding,则输出特征图的边长为:
输出图像长或宽=(输入图像长或宽-1)stride-2padding+kernel_size+out_padding

pytorch实现反卷积

class torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True,dilation=1)
in_channels(int) – 输入信号的通道数
out_channels(int) – 卷积产生的通道数
kerner_size(int or tuple) - 卷积核的大小
stride(int or tuple,optional) - 卷积步长
padding(int or tuple, optional) - 输入的每一条边补充0的层数
output_padding(int or tuple, optional) - 输出的每一条边补充0的层数
groups(int, optional) – 从输入通道到输出通道的阻塞连接数
bias(bool, optional) - 如果bias=True,添加偏置
dilation(int or tuple, optional) – 卷积核元素之间的间距
shape:
输入: (N,C_in,H_in,W_in)
输出: (N,C_out,H_out,W_out)
H o u t = ( H i n − 1 ) s t r i d e [ 0 ] − 2 p a d d i n g [ 0 ] + k e r n e l s i z e [ 0 ] + o u t p u t p a d d i n g [ 0 ] H_{out}=(H_{in}-1)stride[0]-2padding[0]+kernel_size[0]+output_padding[0] Hout=(Hin1)stride[0]2padding[0]+kernelsize[0]+outputpadding[0]
W o u t = ( W i n − 1 ) s t r i d e [ 1 ] − 2 p a d d i n g [ 1 ] + k e r n e l s i z e [ 1 ] + o u t p u t p a d d i n g [ 1 ] W_{out}=(W_{in}-1)stride[1]-2padding[1]+kernel_size[1]+output_padding[1] Wout=(Win1)stride[1]2padding[1]+kernelsize[1]+outputpadding[1]

你可能感兴趣的:(深度学习)