反卷积理解

图示反卷积

  • 这里以尺寸为2x2的图像和3x3的单位卷积核为输入

在这里插入图片描述
其他参数设置步长stride=2,膨胀Dilation=2, padding=0

  • 1. 先对输入进行膨胀,输入膨胀等于步长stride, 我们的stride=2, 所以每个输入图像的像素要间隔2个像素
    • 如下图所示
    • 在这里插入图片描述
  • 2. 对膨胀过的输入进行Padding, Input Padding = Dilation * (kernel_size - 1) - padding = 3
    • 如下图所示
    • 9x9在这里插入图片描述- 3. 对卷积进行膨胀,Dilation = 2,每个像素间隔2
      • 如下图所示
      • 5x5在这里插入图片描述
  • 4. 用第3步膨胀过的卷积, 膨胀Padding好的输入图像第4步,stride = 1, 输出为下图所示
    • 输出尺寸: N=(W−F+2P)/S+1 = (9 - 5 + 2 * 0)/ 1 + 1 = 5
      • 如下图所示
      • 5x5
    • 在这里插入图片描述

下面用代码验证

import torch
import torch.nn as nn

up = nn.ConvTranspose2d(1, 1, kernel_size=3, bias=False, stride=2, padding=1, dilation=2)

# 把卷积核初始化为特定值, 单位矩阵
up.weight.data = torch.eye(3, 3).view(1, 1, 3, 3)

x = torch.tensor([[1, 2], [3, 4]], dtype=torch.float32).view(1, 1, 2, 2)

x, up(x)

output:

    (tensor([[[[1., 2.],
               [3., 4.]]]]),
     tensor([[[[0., 0., 0., 0., 0.],
               [0., 5., 0., 2., 0.],
               [0., 0., 0., 0., 0.],
               [0., 3., 0., 5., 0.],
               [0., 0., 0., 0., 0.]]]], grad_fn=<ConvolutionBackward0>))

对上了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值