在pytorch中实现与TensorFlow类似的”same”方式padding

前言

TensorFlow中在使用卷积层函数的时候有一个参数padding可以选择same或者vaild,具体可以看之前的这篇文章:https://oldpan.me/archives/tf-keras-padding-vaild-same 而在pytorch中,现在的版本(0.4.0)中还是没有这个功能的,现在我们要在pytorch中实现与TensorFlow相同功能的padding=’same’的操作。

pytorch中padding-Vaild
首先需要说明一点,在pytorch中,如果你不指定padding的大小,在pytorch中默认的padding方式就是vaild。

我们用一段程序来演示一下pytorch中的vaild操作:

根据上图中的描述,我们首先定义一个长度为13的一维向量,然后用核大小为6,步长为5的一维卷积核对其进行卷积操作,由上图很容易看出输出为长度为2的数据(因为只进行了两次卷积操作,12和13被弃用了)。

由程序结果可以看到pytorch中的默认padding模式是vaild。

pytorch中padding-same
这里我们借用TensorFlow中的核心函数来模仿实现padding=same的效果。

自定义这个函数后我们移植pytorch中的Conv2d函数,在其forward中将默认的conv2d函数改为我们的padding-same函数:

然后在实际使用中,调用我们移植过来修改完的函数即可。

声明:来自oldpan博客,仅代表创作者观点。链接:https://eyangzhen.com/7185.html

oldpan博客的头像oldpan博客

相关推荐

添加微信
添加微信
Ai学习群
返回顶部