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 相关文章推荐
Python字典及字典基本操作方法详解
Jan 30 Python
Python从零开始创建区块链
Mar 06 Python
Python实现将多个空格换为一个空格.md的方法
Dec 20 Python
python实现贪吃蛇游戏
Mar 21 Python
对dataframe数据之间求补集的实例详解
Jan 30 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
Mar 24 Python
总结Pyinstaller的坑及终极解决方法(小结)
Sep 21 Python
Python爬取微信小程序通用方法代码实例详解
Sep 29 Python
Python下载的11种姿势(小结)
Nov 18 Python
Django模型层实现多表关系创建和多表操作
Jul 21 Python
python数字图像处理数据类型及颜色空间转换
Jun 28 Python
Python使用pandas导入xlsx格式的excel文件内容操作代码
Dec 24 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 出现乱码和Sessions验证问题的解决方法!
2008/12/06 PHP
php 代码优化的42条建议 推荐
2009/09/25 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
Yii2.0中的COOKIE和SESSION用法
2016/08/12 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
jqGrid读取选择的多行的某个属性代码
2014/05/18 Javascript
JS中完美兼容各大浏览器的scrolltop方法
2015/04/17 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
node.js环境搭建图文详解
2018/09/19 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
[58:09]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第三场 6.2
2018/06/03 DOTA
Python基础之getpass模块详细介绍
2017/08/10 Python
python字典DICT类型合并详解
2017/08/17 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
python-tkinter之按钮的使用,开关方法
2019/06/11 Python
Python 硬币兑换问题
2019/07/29 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
python 实现dict转json并保存文件
2019/12/05 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
2020/06/11 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
python 录制系统声音的示例
2020/12/21 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
高级3D打印市场:Gambody
2019/12/26 全球购物
kfc实习自我鉴定
2013/12/14 职场文书
教师求职信范文分享
2013/12/27 职场文书
绿色出行口号
2014/06/18 职场文书
《折线统计图》教学反思
2016/02/22 职场文书