基于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 相关文章推荐
netbeans7安装python插件的方法图解
Dec 24 Python
Python获取Windows或Linux主机名称通用函数分享
Nov 22 Python
Python编程实现数学运算求一元二次方程的实根算法示例
Apr 02 Python
python 定时任务去检测服务器端口是否通的实例
Jan 26 Python
pytorch numpy list类型之间的相互转换实例
Aug 18 Python
Django连接数据库并实现读写分离过程解析
Nov 13 Python
python dumps和loads区别详解
Feb 04 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
Mar 09 Python
Jupyter notebook无法导入第三方模块的解决方式
Apr 15 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
Jun 30 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
Jul 02 Python
python实现计算器简易版
Dec 17 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
学习PHP session的传递方式
2016/06/15 PHP
PHP购物车类Cart.class.php定义与用法示例
2016/07/20 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
刷新页面实现方式总结(HTML,ASP,JS)
2008/11/13 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
2016/08/08 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
Angular移动端页面input无法输入的解决方法
2017/11/14 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
Vue2.5通过json文件读取数据的方法
2018/02/27 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
2019/05/15 Javascript
ES6顶层对象、global对象实例分析
2019/06/14 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
[02:32]DOTA2亚洲邀请赛 C9战队出场宣传片
2015/02/07 DOTA
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
[01:34:42]NAVI vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python with statement 进行文件操作指南
2014/08/22 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
python实现网站微信登录的示例代码
2019/09/18 Python
Django中自定义模型管理器(Manager)及方法
2019/09/23 Python
超实用的 30 段 Python 案例
2019/10/10 Python
Python+MySQL随机试卷及答案生成程序的示例代码
2021/02/01 Python
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
Allsole美国/加拿大:英国一家专门出售品牌鞋子的网站
2018/10/21 全球购物
迅雷Cued工作心得体会
2014/01/27 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
幼儿园园长六一致辞
2015/07/31 职场文书
2016年母亲节寄语
2015/12/04 职场文书
2016年校园植树节广播稿
2015/12/17 职场文书
python批量创建变量并赋值操作
2021/06/03 Python