基于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简单实现子网掩码转换的方法
Apr 13 Python
Python闭包执行时值的传递方式实例分析
Jun 04 Python
Python从使用线程到使用async/await的深入讲解
Sep 16 Python
使用Python刷淘宝喵币(低阶入门版)
Oct 30 Python
python selenium 执行完毕关闭chromedriver进程示例
Nov 15 Python
python路径的写法及目录的获取方式
Dec 26 Python
关于初始种子自动选取的区域生长实例(python+opencv)
Jan 16 Python
keras模型保存为tensorflow的二进制模型方式
May 25 Python
python用opencv完成图像分割并进行目标物的提取
May 25 Python
python BeautifulSoup库的安装与使用
Dec 17 Python
python Scrapy爬虫框架的使用
Jan 21 Python
PyTorch 如何设置随机数种子使结果可复现
May 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
解决中英文字符串长度问题函数
2007/01/16 PHP
php匹配字符中链接地址的方法
2014/12/22 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
jQuery的框架介绍
2016/05/11 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
Angularjs使用过滤器完成排序功能
2017/09/20 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
web前端vue filter 过滤器
2018/01/12 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
p5.js绘制创意自画像
2019/11/04 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
Python基于smtplib实现异步发送邮件服务
2015/05/28 Python
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
python字符串常用方法
2018/06/14 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
2020/11/19 Python
商场中秋节活动方案
2014/02/07 职场文书
2014年服务行业工作总结
2014/11/18 职场文书
2014年创先争优工作总结
2014/12/11 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
初中英语教学随笔
2015/08/15 职场文书
详解Python牛顿插值法
2021/05/11 Python
springboot读取resources下文件的方式详解
2022/06/21 Java/Android