卷积神经网络中的维数计算

时间:2020-03-30 03:16:40

标签: tensorflow keras cnn

我正在阅读有关Keras卷积自动编码器的教程,我意识到在计算这些层之后我没有得到尺寸(8、4、4)-在第二个卷积层,因为步幅较大。那么如何获得这个尺寸?还是有人可以解释计算过程?

对于这种情况下如何执行“相同”填充,我也感到困惑,因为他们总是提到“当步幅= 1时,相同的填充将保持相同的尺寸”。我完全明白。但是,当跨度不是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

1 个答案:

答案 0 :(得分:0)

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