基于pytorch padding=SAME的解决方式


Posted in Python onFebruary 18, 2020

tensorflow中的conv2有padding=‘SAME'这个参数。吴恩达讲课中说到当padding=(f-1)/2(f为卷积核大小)时则是SAME策略。但是这个没有考虑到空洞卷积的情况,也没有考虑到strides的情况。

查阅资料后发现网上方法比较麻烦。

手算,实验了一个早上,终于初步解决了问题。

分为两步:

填充多少

中文文档中有计算公式:

输入:

基于pytorch padding=SAME的解决方式

输出:

基于pytorch padding=SAME的解决方式

因为卷积后图片大小同卷积前,所以这里W_out=W_in, H_out=H_in。解一元一次方程即可。结果取ceil。

怎么填充

torch是先填充再卷积。conv2d的策略如此。所以我先在forward中获取上述方程需要的参数。然后使用torch.nn.functional.pad填充就好了。

然后

t2=torch.randn([1,1,4,4])
print(t2.size())
m1 = torch.nn.Conv2d(1, 1, 1, padding=(1,0))
print(m1(t2).size())
t2=F.pad(t2,(0,0,1,1))
print(t2.size())

有两个发现

pad是对称的两边都填充的,所以上述总共填充2行/列

参数中padding=(1,0)的效果,与F.pad(t2, (0,0,1,1)的效果一样。而不是与F.pad(t2,1,1,0,0)效果一样。很神奇。本来(1,0)按照解视是1是H边(左右)。0是W边(上下)。(0,0,1,1)按解释是左右不填充,上下填充。结果刚好相反。

这样应该就没什么问题了。

之后还需要看反卷积跟池化的pooling='SAME'是怎么实现的。

以上这篇基于pytorch padding=SAME的解决方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python模块学习 datetime介绍
Aug 27 Python
用实例说明python的*args和**kwargs用法
Nov 01 Python
Python深入学习之特殊方法与多范式
Aug 31 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
Jun 14 Python
Python3+Appium实现多台移动设备操作的方法
Jul 05 Python
解决Jupyter无法导入已安装的 module问题
Apr 17 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
May 21 Python
Python接收手机短信的代码整理
Aug 02 Python
Python如何在单元测试中给对象打补丁
Aug 03 Python
Python容器类型公共方法总结
Aug 19 Python
Python3爬虫RedisDump的安装步骤
Feb 20 Python
Python first-order-model实现让照片动起来
Jun 25 Python
Python中pyecharts安装及安装失败的解决方法
Feb 18 #Python
Python chardet库识别编码原理解析
Feb 18 #Python
解决pytorch-yolov3 train 报错的问题
Feb 18 #Python
利用PyQt中的QThread类实现多线程
Feb 18 #Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
Feb 18 #Python
Python识别html主要文本框过程解析
Feb 18 #Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 #Python
You might like
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
详解PHP中strlen和mb_strlen函数的区别
2014/03/07 PHP
基于php判断客户端类型
2016/10/14 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
javascript的键盘控制事件说明
2008/04/15 Javascript
地震发生中逃生十大法则
2008/05/12 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
IE中的File域无法清空使用jQuery重设File域
2014/04/24 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
2017/06/13 Javascript
Vue引入Stylus知识点总结
2020/01/16 Javascript
如何在postman中添加cookie信息步骤解析
2020/06/30 Javascript
如何通过vscode运行调试javascript代码
2020/07/24 Javascript
python之import机制详解
2014/07/03 Python
python静态方法实例
2015/01/14 Python
Python 递归函数详解及实例
2016/12/27 Python
Python入门_条件控制(详解)
2017/05/16 Python
Python类的继承、多态及获取对象信息操作详解
2019/02/28 Python
从列表或字典创建Pandas的DataFrame对象的方法
2019/07/06 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
一份软件工程师的面试试题
2016/02/01 面试题
人力资源管理专业学生自我评价
2013/11/20 职场文书
会计电算化专业毕业生推荐信
2013/12/24 职场文书
心理健康课教学反思
2014/02/13 职场文书
党员三严三实心得体会
2014/10/13 职场文书
2014年导购员工作总结
2014/11/18 职场文书
2014年班组长工作总结
2014/11/20 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书
小英雄雨来观后感
2015/06/09 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
JS实现九宫格拼图游戏
2022/06/28 Javascript