基于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解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
Jul 06 Python
Python中利用xpath解析HTML的方法
May 14 Python
使用Python对微信好友进行数据分析
Jun 27 Python
matplotlib给子图添加图例的方法
Aug 03 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
May 04 Python
python中@property和property函数常见使用方法示例
Oct 21 Python
pygame实现俄罗斯方块游戏(基础篇3)
Oct 29 Python
Python中包的用法及安装
Feb 11 Python
pycharm中import呈现灰色原因的解决方法
Mar 04 Python
Python小白垃圾回收机制入门
Jun 09 Python
用python绘制樱花树
Oct 09 Python
python中xlutils库用法浅析
Dec 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中的时间显示
2007/01/18 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
smarty模板判断数组为空的方法
2015/06/10 PHP
php实现mysql数据库连接操作及用户管理
2015/11/08 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
jQuery 动画弹出窗体支持多种展现方式
2010/04/29 Javascript
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
Python基于pillow判断图片完整性的方法
2016/09/18 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
Python装饰器简单用法实例小结
2018/12/03 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
实现Python与STM32通信方式
2019/12/18 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
2020/06/01 Python
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
2020/06/02 HTML / CSS
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
Prototype如何为一个Ajax添加一个参数
2015/12/06 面试题
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
出国考察邀请函
2014/01/21 职场文书
培训主管的职业生涯规划
2014/03/06 职场文书
研发工程师岗位职责
2014/04/28 职场文书
关于热爱祖国的演讲稿
2014/05/04 职场文书
担保书格式
2015/01/20 职场文书
匿名信格式范文
2015/05/27 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang
Pytorch 实现变量类型转换
2021/05/17 Python