PyTorch中反卷积的用法详解


Posted in Python onDecember 30, 2019

pytorch中的 2D 卷积层 和 2D 反卷积层 函数分别如下:

class torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, groups=1, bias=True)
class torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, bias=True)

我不禁有疑问:

问题1: 两个函数的参数为什么几乎一致呢?

问题2: 反卷积层中的 output_padding是什么意思呢?

问题3: 反卷积层如何计算input和output的形状关系呢?

看了中文文档后,我得不出答案,看了英文文档,才弄明白了。花费了一个下午的时间去研究这个问题,值得用此文纪录一下。

我们知道,在卷积层中,输入输出的形状关系为:

o = [ (i + 2p - k)/s ] +1 (1)

其中:

O : 为 output size

i: 为 input size

p: 为 padding size

k: 为kernel size

s: 为 stride size

[] 为下取整运算

(1) 当 S=1 时

若 s等于1,则公式(1)中的取整符号消失,o 与 i 为 一一对应 的关系。 我们有结论:

如果卷积层函数和反卷积层函数的 kernel_size, padding size参数相同(且 stride= 1),设反卷基层的输入输出形状为 i' 和 o', 卷积层的输入输出形状i和o, 则它们为 交叉对应 的关系,即:

i = o'
o = i'

为回答问题3, 我们将上述关系代入公式中,即:

i' = o' + 2p - k +1

已知 i', 即可推出 o':

o' = i' - 2p + k - 1 (2)

摘两个例子:

PyTorch中反卷积的用法详解

PyTorch中反卷积的用法详解

(2) 当 S>1 时

若 S>1 , 则公式(1)中的取整符号不能消去,o 与 i 为 多对1 的关系。 效仿 S=1时的情形, 我们有结论:

如果卷积层函数和反卷积层函数的 kernel_size, padding size参数相同(且 stride>1),设反卷基层的输入输出形状为 i' 和 o', 卷积层的输入输出形状i和o,

i' = [ (o' + 2p - k)/s ] +1

已知 i', 我们可以得出 s 个 o' 解:

o'(0) = ( i' - 1) x s + k - 2p
o'(1) = o'(1) + 1
o'(2) = o'(1) + 2
...
o'(s-1) = o'(1) + s-1

即:

o'(n) =o'(1) + n = ( i' - 1) x s + k - 2p + n,
n = {0, 1, 2...s-1}

为了确定唯一的 o' 解, 我们用反卷积层函数中的ouput padding参数指定公式中的 n 值。这样,我们就回答了问题(2)。

摘一个简单的例子:

PyTorch中反卷积的用法详解

(3) 实验验证

给出一小段测试代码,改变各个参数值,运行比较来验证上面得出的结论,have fun~.

from torch import nn
from torch.nn import init
from torch.autograd import Variable

dconv = nn.ConvTranspose2d(in_channels=1, out_channels= 1, kernel_size=2, stride=2, padding=1,output_padding=0, bias= False)
init.constant(dconv.weight, 1)
print(dconv.weight)

input = Variable(torch.ones(1, 1, 2, 2))
print(input)
print(dconv(input))

以上这篇PyTorch中反卷积的用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Django中URL视图函数的一些高级概念介绍
Jul 20 Python
使用matplotlib画散点图的方法
May 25 Python
Python封装原理与实现方法详解
Aug 28 Python
浅析python继承与多重继承
Sep 13 Python
详解Python 调用C# dll库最简方法
Jun 20 Python
python Django 创建应用过程图示详解
Jul 29 Python
python matplotlib库绘制散点图例题解析
Aug 10 Python
python list转置和前后反转的例子
Aug 26 Python
Python+OpenCV实现图像的全景拼接
Mar 05 Python
解决django中form表单设置action后无法回到原页面的问题
Mar 13 Python
简单了解python调用其他脚本方法实例
Mar 26 Python
python实现层次聚类的方法
Nov 01 Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 #Python
Pytorch实现各种2d卷积示例
Dec 30 #Python
Python面向对象之多态原理与用法案例分析
Dec 30 #Python
Pytoch之torchvision.transforms图像变换实例
Dec 30 #Python
python面向对象之类属性和类方法案例分析
Dec 30 #Python
基于Python执行dos命令并获取输出的结果
Dec 30 #Python
python实现的批量分析xml标签中各个类别个数功能示例
Dec 30 #Python
You might like
不错的一篇面向对象的PHP开发模式(简写版)
2007/03/15 PHP
php常用hash加密函数
2014/11/22 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
Yii2.0建立公共方法简单示例
2019/01/29 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
javascript 精粹笔记
2010/05/09 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
JavaScript导出Excel实例详解
2014/11/25 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
2015/06/19 Javascript
Node.js编程中客户端Session的使用详解
2015/06/23 Javascript
JavaScript对象创建模式实例汇总
2016/10/03 Javascript
layui前段框架日期控件使用方法详解
2017/05/19 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
原生JavaScript实现todolist功能
2018/03/02 Javascript
小程序实现多选框功能
2018/10/30 Javascript
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
JS实现的A*寻路算法详解
2018/12/14 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
2019/05/02 Javascript
JavaScript组合设计模式--改进引入案例分析
2020/05/23 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
vue全局使用axios的操作
2020/09/08 Javascript
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
python用装饰器自动注册Tornado路由详解
2017/02/14 Python
python滑块验证码的破解实现
2019/11/10 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
优秀的2014年两会精神解读
2014/03/17 职场文书
化学专业自荐信
2014/05/28 职场文书
岗位职责说明书模板
2014/07/30 职场文书
2014年妇产科工作总结
2014/12/08 职场文书
火烧圆明园观后感
2015/06/03 职场文书
百年孤独读书笔记
2015/06/29 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
2016银行求职自荐信
2016/01/28 职场文书