Большинство реализаций сверточных слоев будут работать с изображениями любого размера.Для двумерных сверток с 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]
, независимо от размера ввода, за которым следуют некоторые плотные слои для возврата к логитам.