卷积与反卷积

部署运行你感兴趣的模型镜像

1 卷积

1.1 卷积后的输出维度

设输入维度为i x i,卷积核大小为k x k,padding为p,strides为s,则输出维度为 (i - k + 2p) / s +1
注意:除法为向下取整的除法,即3 / 2 = 1。
i - k是不考虑padding的情况下,卷积核能纵向/横向移动的次数

2 反卷积

2.1 来源

反卷积/转置卷积的操作是在《Visualizing and Understanding Convolutional Networks》中提出来的。
其只能恢复原来的大小,不能恢复原来的数值。
可参考:https://zhuanlan.zhihu.com/p/48501100《反卷积(Transposed Convolution)详细推导》

2.2 原理

A deconvolutional layer is simply a regular convolutional layer with its filters transposed. By applying these transposed filters to the output of a convolutional layer, the input can be retrieved.

2.3 使用

class torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, bias=True)
详细参考:https://blog.youkuaiyun.com/disanda/article/details/105762054

2.3.1 padding

padding的含义不是卷积的padding的含义,理解为kernel向输入层中间移动的次数。
padding为0时,在input(蓝色2 x 2)外面填充k - 1 = 2层
padding为1时,在input外面填充k - 2 = 1层。
下图是padding为0时的例子。
在这里插入图片描述

2.3.2 stride

stride是输入之间的距离,默认为1。
如果stride为2,那么每个输入之间相隔1个。
下图是stride=2的例子。
在这里插入图片描述

output_padding

由于卷积涉及到向下取整,所以在输出维度一定时,对应了多个可能的输入维度,可能的个数为【步长stride】。因此采用out_padding进行确定。
参考:https://zhuanlan.zhihu.com/p/485999111《【深度学习反卷积】Pytorch中反卷积的应用》

2.3 意义

反卷积是一种上采样的方法,除此之外还有反池化和双线性差值bilinear。
在图像领域可以做segmentation,在很多领域可以做cost volume。

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值