• 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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

  • 相关阅读:
    操作系统(三)| 进程管理上 进程状态 同步 互斥
    跨境物流美国专线的注意事项是哪些
    901 股票价格跨度——Leetcode天天刷(20022.10.21)【单调栈】
    降维(Dimensionality Reduction)
    ROS学习(27)有限状态机SMACH
    Seata 笔记
    Java手写最短路径算法和案例拓展
    如何在 Odoo 16 中对 Many2Many 字段使用 Group by
    小程序封装组件简单案例,所有小程序适用(传入参数、外抛事件、传入样式)
    计算机视觉-光源的目的和作用
  • 原文地址:https://blog.csdn.net/pylittlebrat/article/details/126661824