基于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下线程之间的共享和释放示例
May 04 Python
Python3读取UTF-8文件及统计文件行数的方法
May 22 Python
python通过get,post方式发送http请求和接收http响应的方法
May 26 Python
使用Python发送各种形式的邮件的方法汇总
Nov 09 Python
详细分析python3的reduce函数
Dec 05 Python
DataFrame中去除指定列为空的行方法
Apr 08 Python
Python Pandas批量读取csv文件到dataframe的方法
Oct 08 Python
通过python改变图片特定区域的颜色详解
Jul 15 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
python 实现两个npy档案合并
Jul 01 Python
Python自然语言处理之切分算法详解
Apr 25 Python
七个非常实用的Python工具包总结
Jun 15 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 Google的translate API代码
2008/12/10 PHP
PHP5中新增stdClass 内部保留类
2011/06/13 PHP
搭建自己的PHP MVC框架详解
2017/08/16 PHP
PHP中单例模式的使用场景与使用方法讲解
2019/03/18 PHP
laravel邮件发送的实现代码示例
2020/01/31 PHP
JavaScript QueryString解析类代码
2010/01/17 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
jQuery实现左右切换焦点图
2015/04/03 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
微信JSSDK调用微信扫一扫功能的方法
2017/07/25 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
微信小程序实现下拉框功能
2019/07/16 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
2017/11/15 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
Django REST框架创建一个简单的Api实例讲解
2019/11/05 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
心理学专业大学生职业生涯规划范文
2014/02/19 职场文书
自主招生教师推荐信
2014/05/10 职场文书
献爱心大型公益活动策划方案
2014/09/15 职场文书
汽车4S店前台接待岗位职责
2015/04/03 职场文书
开学典礼致辞
2015/07/29 职场文书
初中政治教学工作总结
2015/08/13 职场文书
2016年五四青年节校园广播稿
2015/12/17 职场文书
Python中常见的导入方式总结
2021/05/06 Python
Linux中各个目录的作用与内容
2022/06/28 Servers