У меня есть пример кода из Интернета.
Это часть простого кода моделирования CNN + GAN в python3.6, keras.
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), а отступы должны быть равны 1 на "padding='same'"
.
То есть размер фильтра должен быть (4,4) вместо (5,5)?
Кто-нибудь может объяснить причину размера фильтра? Спасибо.