Ответ 1
Вы можете думать о свертке 1x1xD
как методе уменьшения размерности, когда он помещается где-то в сеть.
Если у вас есть входной объем 100x100x512
, и вы свернете его с набором фильтров D
, каждый из которых имеет размер 1x1x512
, вы уменьшите количество функций от 512 до D.
Следовательно, выходной объем 100x100xD
.
Как вы можете видеть, эта свертка (1x1x512)xD
математически эквивалентна полностью связанному слою. Основное различие заключается в том, что, в то время как уровень FC требует, чтобы вход имел фиксированный размер, сверточный слой может принимать входные данные каждого объема с пространственной протяженностью больше или равной 100x100
.
A 1x1xD
свертка может заменить любой полностью связанный слой из-за этой эквивалентности.
Кроме того, свертки 1x1xD
не только уменьшают возможности ввода на следующий уровень, но также вводят новые параметры и новую нелинейность в сеть, что поможет повысить точность модели.
Когда свертка 1x1xD
помещается в конец классификационной сети, она действует точно как уровень FC, но вместо того, чтобы думать о ней как о методе сокращения размерности, более интуитивно думать об этом как о слое, который будет выведите тензор с формой WxHxnum_classes
.
Пространственная протяженность выходного тензора (обозначенная символами W
и H
) является динамической и определяется местоположением входного изображения, которое проанализировала сеть.
Если сеть была определена с входом 200x200x3
, и мы даем ей входное изображение с таким размером, выход будет представлять собой карту с W = H = 1
и глубиной = num_classes
.
Но, если входное изображение имеет пространственную протяженность больше, чем 200x200
, чем сверточная сеть будет анализировать разные местоположения входного изображения (как это делает стандартная свертка) и создаст тензор с W > 1
и H > 1
.
Это невозможно с уровнем FC, который ограничивает сеть, чтобы принимать фиксированный размер ввода и производить фиксированный размер.