首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ZeroPadding+Convolution而不是padding='same‘的卷积

使用ZeroPadding+Convolution而不是padding='same‘的卷积
EN

Stack Overflow用户
提问于 2021-05-21 16:51:47
回答 1查看 18关注 0票数 0

我使用Tensorflow 2.0已经快一年了,当我在卷积中使用填充“相同”时,我在很多代码中发现了一个概念。

我见过的一些代码实现了以下功能:

代码语言:javascript
复制
 x = ZeroPadding2D(padding=(pad, pad))(x)
 x = Conv2D(64, (3, 3), strides=(1, 1), dilation_rate=pad,
                  use_bias=False)(x)

不是直接使用:

代码语言:javascript
复制
x = Conv2D(64, (3, 3), strides=(1, 1), dilation_rate=pad,
                  use_bias=False, padding='same')(x)

在卷积之前用same=‘valid’进行填充,和直接在卷积中使用padding='same‘有什么不同吗?

我猜这两种方法没有区别,那么为什么人们会使用这种方法呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-22 01:19:19

绝对没有区别。

这就是证据

代码语言:javascript
复制
import tensorflow as tf
from tensorflow.keras.layers import Conv2D, ZeroPadding2D

inputs = tf.ones((1, 5, 5, 1))
kernel_initializer = tf.keras.initializers.Constant(2)

pad = 1
x = ZeroPadding2D(padding=(pad, pad))(inputs)
x = Conv2D(
    64,
    (3, 3),
    strides=(1, 1),
    dilation_rate=pad,
    use_bias=False,
    kernel_initializer=kernel_initializer,
)(x)

y = Conv2D(
    64,
    (3, 3),
    strides=(1, 1),
    dilation_rate=pad,
    use_bias=False,
    padding="same",
    kernel_initializer=kernel_initializer,
)(inputs)

tf.assert_equal(x, y)

人们做第一个,可能是因为他们想记住公式(?)或者因为这是他们的风格选择-但这在实践中没有什么不同

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67633655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档