Входной размер изображения CNN Tensorflow - PullRequest
0 голосов
/ 24 мая 2018

Я кормлю свой CNN размером 2048x2048.Однако я случайно забыл изменить размер ввода:

img_width, img_height = 32, 32
input_shape = (3, img_width, img_height)

Мне было интересно, почему тренировка все еще продолжается, даже если входные изображения имеют размер больше 32x32 пикселей?Или CNN распознает только часть изображений?

Заранее спасибо.

1 Ответ

0 голосов
/ 24 мая 2018

Большинство реализаций сверточных слоев будут работать с изображениями любого размера.Для двумерных сверток с padding="SAME" выходной размер любого сверточного слоя будет [batch_size, input_height // stride[0], input_width // stride[1], filters] (действительное заполнение означает, что вы потеряете несколько пикселей на каждой границе в зависимости от размера ядра).

Аналогично, числовесов, задействованных в ядре, равен filters_in * filters_out * np.prod(kernel_size), который не зависит от размера ввода (смещение всего filters_out).

Для выполнения таких задач, как классификация, большинство CNN используют в конце слой пространственного объединения (например, tf.reduce_mean(features, axis=(1, 2))), который уменьшает вывод любого пакета входного изображения до [batch_size, n_filters_out], независимо от размера ввода, за которым следуют некоторые плотные слои для возврата к логитам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...