Каково количество фильтров в CNN?

В настоящее время я вижу API-интерфейс theano,

theano.tensor.nnet.conv2d(input, filters, input_shape=None, filter_shape=None, border_mode='valid', subsample=(1, 1), filter_flip=True, image_shape=None, **kwargs)

где filter_shape является кортежем (num_filter, num_channel, height, width), я сбиваю с толку об этом, потому что это не то, что число фильтров, решаемых по шагу, при сдвиге окна фильтра на изображении? Как я могу указать номер фильтра именно так? Для меня было бы разумно, если он вычисляется по шагу параметра (если он есть).

Кроме того, я тоже смущен термином "карта функций", это нейроны на каждом слое? Как насчет размера партии? Как они соотносятся?

Ответы

Ответ 1

Количество фильтров - это число нейронов, поскольку каждый нейрон выполняет различную свертку на входе в слой (точнее, входные веса нейронов образуют ядра свертки).

Карта объектов - это результат применения фильтра (таким образом, у вас есть столько карт объектов, сколько и фильтров), а ее размер зависит от размера окна/ядра вашего фильтра и шага.

Следующее изображение было лучшим, что я смог найти, чтобы объяснить концепцию на высоком уровне: enter image description here Обратите внимание, что к входному изображению применяются 2 различных сверточных фильтра, что приводит к 2 различным картам характеристик (вывод фильтров). Каждый пиксель каждой карты объектов является выходом сверточного слоя.

Например, если у вас есть входные изображения 28x28 и сверточный слой с 20 фильтрами 7x7 и шагом 1, вы получите 20 карт объектов 22x22 на выходе этого слоя. Обратите внимание, что это представлено следующему слою в виде тома с шириной = высота = 22 и глубиной = num_channels = 20. Вы можете использовать это же представление для обучения вашего CNN на изображениях RGB, таких как изображения из набора данных CIFAR10, который будет Объемы 32x32x3 (свертка применяется только к 2 пространственным измерениям).

Ответ 2

Количество фильтров - это гиперпараметр, который можно настраивать. Количество нейронов в сверточном слое равно размеру выходного слоя. В случае изображений это размер карты объектов.

Ответ 3

Размер ядра - это количество окон ядра, которое необходимо для покрытия вашего изображения.

Итак, в примере MNIST у вас есть размер 28 x 28. Это дает 784 пикселей.

Количество ядер 5 x 5 = 25, которые вам нужны, это 784/25 = 31.6, поэтому вы выбираете следующее целое число 32.

Ответ 4

Не существует правильного ответа относительно того, какое количество фильтров является наилучшим. Это сильно зависит от типа и сложности ваших (изображений) данных. Подходящее количество функций извлекается из опыта после многократной работы с подобными типами наборов данных с течением времени. В общем, чем больше функций вы хотите захватить (и потенциально доступны) в изображении, тем выше число фильтров, требуемых в CNN.