基于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中定时任务框架APScheduler的快速入门指南
Jul 06 Python
使用python实现接口的方法
Jul 07 Python
python对配置文件.ini进行增删改查操作的方法示例
Jul 28 Python
Python字符编码与函数的基本使用方法
Sep 30 Python
PyTorch学习笔记之回归实战
May 28 Python
python如何发布自已pip项目的方法步骤
Oct 09 Python
python检测IP地址变化并触发事件
Dec 26 Python
Python Django给admin添加Action的方法实例详解
Apr 29 Python
python topk()函数求最大和最小值实例
Apr 02 Python
Python使用Selenium实现淘宝抢单的流程分析
Jun 23 Python
python 利用matplotlib在3D空间中绘制平面的案例
Feb 06 Python
python解析json数据
Apr 29 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实现邮件群发的源码
2013/06/18 PHP
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
php实现数字补零的方法总结
2018/09/12 PHP
PHP PDOStatement::setAttribute讲解
2019/02/01 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
禁止F5等快捷键的JS代码
2007/03/06 Javascript
网站页面自动跳转实现方法PHP、JSP(下)
2010/08/01 Javascript
jqgrid 简单学习笔记
2011/05/03 Javascript
JS删除数组元素的函数介绍
2013/03/27 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
JavaScript入门基础
2015/08/12 Javascript
javascript原生ajax写法分享
2016/04/10 Javascript
JS实现鼠标框选效果完整实例
2016/06/20 Javascript
jQuery实现根据滚动条位置加载相应内容功能
2016/07/18 Javascript
js实现抽奖效果
2017/03/27 Javascript
jQuery代码优化方法总结
2018/01/29 jQuery
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
用JS实现一个简单的打砖块游戏
2019/12/11 Javascript
Python 比较两个数组的元素的异同方法
2017/08/17 Python
numpy排序与集合运算用法示例
2017/12/15 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
基于python实现模拟数据结构模型
2020/06/12 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
运动会广播稿400字
2014/01/25 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书
2015年复活节活动总结
2015/02/27 职场文书
导游词之山东八大关
2019/12/18 职场文书