ConvTranspose2d函数笔记

函数与相关参数

反卷积 :反卷积也被称为 转置卷积 ,反卷积其实就是卷积的逆过程。 大家可能对于反卷积的认识有一个误区,以为通过反卷积就可以获取到经过卷积之前的图片, 实际上通过反卷积操作并不能还原出卷积之前的图片,只能还原出卷积之前图片的尺寸。

CLASS 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’, device=None, dtype=None)

stride: 控制互相关的步幅;
padding: 控制 dilation * (kernel_size - 1) - padding 点数两侧的隐式零填充量;
output_padding: 控制添加到输出形状一侧的附加大小;
dilation: 控制内核点之间的间距; 也称为 à trous 算法。

groups:控制输入和输出之间的连接。 in_channels 和 out_channels 都必须能被组整除。 例如,

  • 在 groups=1 时,所有输入都卷积到所有输出。
  • 在 groups=2 时,该操作等效于并排有两个卷积层,每个卷积层看到一半的输入通道并产生一半的输出通道,并且随后将两者连接起来。
  • 在 groups=in_channels 处,每个输入通道都与自己的一组过滤器进行卷积(大小为 out_channels in_channels \frac{\text{out\_channels}}{\text{in\_channels}} in_channelsout_channels
  • in_channels (int) - 输入图像中的通道数
  • out_channels (int) – 卷积产生的通道数
  • kernel_size (int or tuple) – 卷积核的大小
  • stride (int or tuple, optional) – 卷积的步幅。 默认值:1
  • padding (int or tuple, optional) – dilation * (kernel_size - 1) – padding 零填充将被添加到输入中每个维度的两侧。 默认值:0
  • output_padding (int or tuple, optional) – 附加大小添加到输出形状中每个维度的一侧。 默认值:0
  • groups (int, optional) – 从输入通道到输出通道的阻塞连接数。 默认值:1
  • bias (bool, optional) – 如果为真,则为输出添加可学习的偏差。 默认值:真
  • dilation (int or tuple, optional) – 内核元素之间的间距。 默认值:1

计算和使用

I n p u t : ( N , C i n , H i n , W i n ) o r ( C i n , H i n , W i n ) Input:(N,C_{in},H_{in},W_{in}) or (C_{in},H_{in},W_{in}) Input:(N,Cin,Hin,Win)or(Cin,Hin,Win) O u t p u t : ( N , C o u t , H o u t , W o u t ) o r ( C o u t , H o u t , W o u t ) Output:(N,C_{out},H_{out},W_{out}) or (C_{out},H_{out},W_{out}) Output:(N,Cout,Hout,Wout)or(Cout,Hout,Wout)
H o u t = ( H i n − 1 ) × s t r i d e [ 0 ] − 2 × p a d d i n g [ 0 ] + d i l a t i o n [ 0 ] × ( kernel_size[0] − 1 ) + output_padding[0] + 1 H_{out} =(H_{in} −1)×stride[0]−2×padding[0]+dilation[0]×(\text{kernel\_size[0]}−1)+\text{output\_padding[0]}+1 Hout=(Hin1)×stride[0]2×padding[0]+dilation[0]×(kernel_size[0]1)+output_padding[0]+1
W o u t = ( W i n − 1 ) × s t r i d e [ 0 ] − 2 × p a d d i n g [ 0 ] + d i l a t i o n [ 0 ] × ( kernel_size[0] − 1 ) + output_padding[0] + 1 W_{out} =(W_{in} −1)×stride[0]−2×padding[0]+dilation[0]×(\text{kernel\_size[0]}−1)+\text{output\_padding[0]}+1 Wout=(Win1)×stride[0]2×padding[0]+dilation[0]×(kernel_size[0]1)+output_padding[0]+1

import torch
import torch.nn as nn
m = nn.ConvTranspose2d(16, 33, 3, stride=2)
input = torch.randn(20, 16, 50, 100)
output = m(input)
print(output.shape)

torch.Size([20, 33, 101, 201])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ACxz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值