基于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 相关文章推荐
Centos Python2 升级到Python3的简单实现
Jun 21 Python
Python 新建文件夹与复制文件夹内所有内容的方法
Oct 27 Python
Pycharm取消py脚本中SQL识别的方法
Nov 29 Python
django 信号调度机制详解
Jul 19 Python
使用Python刷淘宝喵币(低阶入门版)
Oct 30 Python
Python统计文本词汇出现次数的实例代码
Feb 27 Python
Python使用扩展库pywin32实现批量文档打印实例
Apr 09 Python
python模拟斗地主发牌
Apr 22 Python
Python创建临时文件和文件夹
Aug 05 Python
python实现简单的五子棋游戏
Sep 01 Python
python输入中文的实例方法
Sep 14 Python
基于Python组装jmx并调用JMeter实现压力测试
Nov 03 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 一个随机字符串生成代码
2010/05/26 PHP
PHP内核探索:变量概述
2014/01/30 PHP
php中创建和调用webservice接口示例
2014/07/25 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
php匹配字符中链接地址的方法
2014/12/22 PHP
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
一个可以随意添加多个序列的tag函数
2009/07/21 Javascript
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
详解js的事件处理函数和动态创建html标记方法
2016/12/16 Javascript
JS实现的系统调色板完整实例
2016/12/21 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
Vue获取微博授权URL代码实例
2020/11/04 Javascript
[00:12]2018DOTA2亚洲邀请赛 Sccc亮相SOLO赛,今年他又会有什么样的战绩?
2018/04/06 DOTA
go和python调用其它程序并得到程序输出
2014/02/10 Python
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
Python记录详细调用堆栈日志的方法
2015/05/05 Python
python os.path模块常用方法实例详解
2018/09/16 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
财务会计自荐信范文
2014/02/21 职场文书
小学五年级学生评语
2014/04/22 职场文书
青春励志演讲稿范文
2014/08/25 职场文书
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
高并发下Redis如何保持数据一致性(避免读后写)
2022/03/18 Redis
Java 通过手写分布式雪花SnowFlake生成ID方法详解
2022/04/07 Java/Android
Go web入门Go pongo2模板引擎
2022/05/20 Golang
create-react-app开发常用配置教程
2022/06/25 Javascript