函数构造:

class ConvTranspose2d(_ConvTransposeMixin, _ConvNd):

    def __init__(self, in_channels, out_channels, kernel_size, stride=1,
                 padding=0, output_padding=0, groups=1, bias=True,
                 dilation=1, padding_mode='zeros'):
  • in_channels(int) – 输入信号的通道数
  • out_channels(int) – 卷积产生的通道数
  • kerner_size(int or tuple) - 卷积核的大小
  • stride(int or tuple,optional) - 卷积步长
  • padding(int or tupleoptional) - 输入的每一条边补充0的层数
  • output_padding(int or tupleoptional) - 输出的每一条边补充0的层数
  • dilation(int or tupleoptional) – 卷积核元素之间的间距
  • groups(intoptional) – 从输入通道到输出通道的阻塞连接数
  • bias(booloptional) - 如果bias=True,添加偏置

 

输入输出计算过程:

h_in = 128*128

h_out = 56*56

这里h_in指正向卷积输入

正向卷积:h_out = (h_in + 2*padding - kernl_size) / stride  +1

+1是因为除不尽向下取整

故转置卷积:h_in = (h_out - 1) * stride + kernl_size - 2*padding + output_padding

output_padding,是因为输出与期望输出有偏差,需在下边补0填充