基于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 字典(dict)遍历的四种方法性能测试报告
Jun 25 Python
python实现中文输出的两种方法
May 09 Python
深入理解Python中各种方法的运作原理
Jun 15 Python
TensorFlow安装及jupyter notebook配置方法
Sep 08 Python
Python中pillow知识点学习
Apr 30 Python
python使用turtle库绘制时钟
Mar 25 Python
对python中两种列表元素去重函数性能的比较方法
Jun 29 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
Jun 17 Python
python pptx复制指定页的ppt教程
Feb 14 Python
django 数据库返回queryset实现封装为字典
May 19 Python
用python实现学生管理系统
Jul 24 Python
Python3爬虫RedisDump的安装步骤
Feb 20 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
BBS(php & mysql)完整版(一)
2006/10/09 PHP
php绘制一条直线的方法
2015/01/24 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
JavaScript面向对象编程
2008/03/02 Javascript
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
2011/04/06 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
vue如何从接口请求数据
2017/06/22 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
js实现图片上传即时显示效果
2019/09/30 Javascript
[02:35]DOTA2英雄基础教程 狙击手
2014/01/14 DOTA
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
[48:38]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs Secret
2018/03/31 DOTA
对于Python的框架中一些会话程序的管理
2015/04/20 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
Ellos丹麦:时尚和服装在线
2016/09/19 全球购物
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
类的核心特性有哪些
2014/01/01 面试题
文员岗位职责
2013/11/09 职场文书
班主任2015新年寄语
2014/12/08 职场文书
会计稽核岗位职责
2015/04/13 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书