【问题标题】:Calculating dimensions in convolutional neural network在卷积神经网络中计算维度
【发布时间】:2020-07-10 09:47:16
【问题描述】:

我正在阅读有关 Keras 卷积自动编码器的本教程,我意识到在计算中这些层之后我没有得到维度 (8, 4, 4) - 图像的维度应该已经下降到 3第二个卷积层,因为步幅很大。那么它是如何获得这个维度的呢?或者谁能​​解释一下计算过程?

我也对在这种情况下如何执行“相同”填充感到困惑,因为他们总是提到“当 stride=1 时,相同的填充将保持相同的尺寸”。我完全明白。但是当 stride 不是 1 时会发生什么?每边有多少个零?我知道尺寸的计算公式 floor((h + 2p - k)//s + 1),但在这种情况下 p 是多少?

谢谢

input_img = Input(shape=(1, 28, 28))

x = Convolution2D(16, 3, 3, activation='relu', border_mode='same')(input_img)
x = MaxPooling2D((2, 2), border_mode='same')(x)
x = Convolution2D(8, 3, 3, activation='relu', border_mode='same')(x)
x = MaxPooling2D((2, 2), border_mode='same')(x)
x = Convolution2D(8, 3, 3, activation='relu', border_mode='same')(x)
encoded = MaxPooling2D((2, 2), border_mode='same')(x)

# at this point the representation is (8, 4, 4) i.e. 128-dimensional

【问题讨论】:

    标签: tensorflow keras conv-neural-network


    【解决方案1】:

    哦,不,我想我知道会发生什么:教程中的代码是错误的。我发现this question 引用了相同的教程和正确的代码。所以他们忘了在所有的 Convolution2D 层中加上括号(这是一个翻译版本),它实际上应该是 16,(3, 3),这意味着步幅是 1,而不是 3。所以它解释了。如果步幅为 3,我们无法得到这个维度。

    【讨论】:

      猜你喜欢
      • 2016-04-16
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 2017-01-01
      • 1970-01-01
      相关资源
      最近更新 更多