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

Posted oldpan博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在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中实现与TensorFlow类似的"same"方式padding

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

pytorch中padding-same

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

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

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

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

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

以上是关于在pytorch中实现与TensorFlow类似的"same"方式padding的主要内容,如果未能解决你的问题,请参考以下文章

终于!TensorFlow引入了动态图机制Eager Execution

在 Android 中实现与多个设备的蓝牙连接的最佳方法是啥?

如何在 Jinja 中实现类似 Django 的标签

从Tensorflow转移到Pytorch

[转载] 终于!TensorFlow引入了动态图机制Eager Execution

如何在 Flutter(Android 和 Ios)中实现与 WebRTC 的电话会议视频聊天