逆卷积(ConvTranspose2d)是什么?

112 篇文章 7 订阅
68 篇文章 6 订阅

上图是一个卷积操作(蓝色为输入,绿色为输出)。

输入的特征图为x:( 4,4 ,channels_in)其中channels_in表示通道数。

卷积核设置:无padding, kernel size为3*3, 步长stride 为1,

输出的特征图为y,(2 ,2  channels_out),channels_out也是通道数。

逆卷积操作就是跟卷积操作的输入输出正好相反(绿色是输入,蓝色是输出)。输入变为特征图y, 卷积核设置同上。输出是上面的特征图x。

再来看一个例子(蓝色为输入,绿色为输出):

我们可以这样想,蓝色的特征图是经过encoder不断卷积后的图片,我们现在要做的是将其尺寸放大,channel数量也变大。这时,就需要用到nn.ConvTranspose2d了。

这里说一下这个新的特征图是怎么得到的:我们在输入的特征图基础加上一些东西,专业名词叫做interpolation,也就是插值。

这就涉及到两个问题,①插在哪里,②插什么。

插什么?插的就是0。

插在哪里?在原先高度方向的每两个相邻中间插上"S t r i d e − 1 Stride-1Stride−1"。

对图的说明(蓝色为输入,绿色为输出):

输入特征图A:(3,3,in_channel)

输入卷积核K:kernel为3 ∗ 3 3*33∗3, stride为2, padding为1

新的特征图B: 3 + ( 3 − 1 ) ∗ ( 2 − 1 ) = 3 + 2 = 5 3 + (3-1)*(2-1) = 3+2 = 53+(3−1)∗(2−1)=3+2=5

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值