Kак поменяется размер изображения по свёрточной сети

Архитектура сверточной сети:

model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same', activation='relu', input_shap  e=(28, 28, 1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(10, activation='softmax'))

Как поменяется размер изображения? Гуглила - не понимаю параметр Conv2D(32,(3,3)) как соотносится с (28,28,1)?


Ответы (2 шт):

Автор решения: CrazyElf

А не пробовали читать документацию? :)

tf.keras.layers.Conv2D(
    filters,
    kernel_size,
  • filters: Integer, the dimensionality of the output space (i.e. the number of output filters in the convolution).
  • kernel_size: An integer or tuple/list of 2 integers, specifying the height and width of the 2D convolution window. Can be a single integer to specify the same value for all spatial dimensions.

Т.е. в вашем случае в этом слое будет 32 фильтра с размером ядра свёртки 3x3. В общем-то это никак не соотносится с размером входных данных, да и не должно соотноситься.

Отдельно вот про kernel ссылка, но вам точно надо почитать что-нибудь про 2D convolution.

→ Ссылка
Автор решения: svil

в 14 раз уменьшится. В примере было получено изображение, которое в 14 раз меньше нашего исходного изображения. Размер итогового изображения будет варьироваться в зависимости от выбора размера прямоугольной сетки и размера шага. За уменьшение отвечает слой MaxPooling. Подробно https://habr.com/ru/post/454986/

→ Ссылка