基于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 list中append()与extend()用法分享
Mar 24 Python
Python程序设计入门(5)类的使用简介
Jun 16 Python
详细讲解Python中的文件I/O操作
May 24 Python
Python实现字符串格式化输出的方法详解
Sep 20 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
Sep 22 Python
详解PyTorch批训练及优化器比较
Apr 28 Python
浅谈python之高阶函数和匿名函数
Mar 21 Python
使用python实现mqtt的发布和订阅
May 05 Python
Django CSRF跨站请求伪造防护过程解析
Jul 31 Python
安装2019Pycharm最新版本的教程详解
Oct 22 Python
python Django框架实现web端分页呈现数据
Oct 31 Python
python drf各类组件的用法和作用
Jan 12 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 危险函数全解析
2009/09/09 PHP
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
php新浪微博登录接口用法实例
2014/12/23 PHP
PHP可变函数学习小结
2015/11/29 PHP
PHP强制转化的形式整理
2020/05/22 PHP
50个优秀经典PHP算法大集合 附源码
2020/08/26 PHP
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
XMLHTTPRequest的属性和方法简介
2010/11/23 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
用原生js做个简单的滑动效果的回到顶部
2014/10/15 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
JS实现简单的天数计算器完整实例
2017/04/28 Javascript
使用ES6语法重构React代码详解
2017/05/09 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
浅谈关于vue中scss公用的解决方案
2019/12/02 Javascript
jQuery实现鼠标移入显示蒙版效果
2020/01/11 jQuery
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
Python实现的栈(Stack)
2018/01/26 Python
python 接口测试response返回数据对比的方法
2018/02/11 Python
浅析python打包工具distutils、setuptools
2018/04/20 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
解决Django连接db遇到的问题
2019/08/29 Python
python实现飞机大战项目
2020/03/11 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
亿企通软件测试面试题
2012/04/10 面试题
工程材料采购方案
2014/05/18 职场文书
承兑汇票转让证明怎么写?
2014/11/30 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技