在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中的默认padding模式是vaild。
pytorch中padding-same
这里我们借用TensorFlow中的核心函数来模仿实现padding=same的效果。
自定义这个函数后我们移植pytorch中的Conv2d函数,在其forward中将默认的conv2d函数改为我们的padding-same函数:
然后在实际使用中,调用我们移植过来修改完的函数即可。
以上是关于在pytorch中实现与TensorFlow类似的"same"方式padding的主要内容,如果未能解决你的问题,请参考以下文章
终于!TensorFlow引入了动态图机制Eager Execution
在 Android 中实现与多个设备的蓝牙连接的最佳方法是啥?