如何在python keras中计算卷积滤波器的大小?

时间:2019-07-04 07:17:25

标签: python tensorflow keras

我从Internet上的某个地方获得了示例代码。 它是keras python3.6中简单的CNN + GAN建模代码的一部分。

def __init__(self):
    self.img_rows = 28
    self.img_cols = 28
    self.channels = 1

def build_discriminator(self):
    img_shape = (self.img_rows, self.img_cols, self.channels)

    model = Sequential()
    model.add(Conv2D(64,(5,5), strides=(2,2),\
    padding='same', input_shape=img_shape))
    model.add(LeakyReLU(0.2))
    model.add(Conv2D(128,(5,5),strides=(2,2)))
    model.add(LeakyReLU(0.2))
    model.add(Flatten())
    model.add(Dense(256))
    model.add(LeakyReLU(0.2))
    model.add(Dropout(0.5))
    model.add(Dense(1))
    model.add(Activation('sigmoid'))
    return model

它实际上有效,但我仍然不明白为什么此过滤器尺寸附带(5,5)。 因为图像大小为28 * 28,并且跨步设置为(2,2),所以每个填充"padding='same'"必须为1。 所以过滤器的大小必须是(4,4)而不是(5,5)? 谁能解释过滤器尺寸的原因?谢谢。

1 个答案:

答案 0 :(得分:0)

这篇文章很好地解释了为什么我们在转换层的过滤器中使用奇数。

https://datascience.stackexchange.com/questions/23183/why-convolutions-always-use-odd-numbers-as-filter-size

一个非常快速的解释(但不完整)是:过滤器需要具有一个中心,对于像(4,4)这样的偶数内核,这是不可能的。