Этот вопрос сводится к тому, «как сделать сверток слоев именно работу.
Предположим, у меня есть изображение в оттенках серого . Таким образом, изображение имеет один канал. В первом слое я применяю свертку с фильтрами и заполнением. Тогда у меня есть еще один слой свертки с сверток и фильтров. Сколько карт у меня есть?3 × 3 k 1 5 × 5 k 2
Тип 1 свертка
Первый слой исполняется. После этого у меня есть карты характеристик (по одной на каждый фильтр). Каждый из них имеет размер . Каждый пиксель был создан путем взятия пикселей из дополненного входного изображения. n × m 3 ⋅ 3 = 9
Затем наносится второй слой. Каждый фильтр применяется отдельно к каждой из карт объектов . Это приводит к картам характеристик для каждой карты характеристик . Таким образом, после второго слоя есть карт объектов. Каждый пиксель каждой из новых карт объектов был создан путем взятия "пикселей" карты дополненных объектов из ранее.k 1 k 1 × k 2 5 ⋅ 5 = 25
Система должна узнать параметры .
Тип 2.1 свертка
Как и прежде: первый слой выполняется. После этого у меня есть карты характеристик (по одной на каждый фильтр). Каждый из них имеет размер . Каждый пиксель был создан путем взятия пикселей из дополненного входного изображения. n × m 3 ⋅ 3 = 9
В отличие от ранее: тогда второй слой применяется. Каждый отдельный фильтр применяется к одному и тому же региону, но все карты объектов из предыдущих. Это приводит к тому, что карты характеристик в общей сложности после выполнения второго слоя. Каждый отдельный пиксель каждой из новых карт объектов был создан путем взятия "пикселей" карт дополненных объектов из предыдущих.k 2 ⋅ 5 ⋅ 5 = 25 ⋅ k 2
Система должна узнать параметры .
Тип 2.2 свертка
Как и выше, но вместо параметров на фильтр, которые необходимо изучить и просто скопировать для других карт входных объектов, у вас есть k_1 \ cdot 3 \ cdot 3 + k_2 \ cdot k_1 \ cdot 5 \ cdot 5 параметров, которые должны быть изучены.к 1 ⋅ 3 ⋅ 3 + K 2 ⋅ K 1 ⋅ 5 ⋅ 5
Вопрос
- Тип 1 или тип 2 обычно используется?
- Какой тип используется в Alexnet ?
- Какой тип используется в GoogLeNet ?
- Если вы говорите тип 1: почему свертки имеют смысл? Разве они не умножают данные только на константу?
- Если вы говорите тип 2: объясните, пожалуйста, квадратичную стоимость («Например, в сети глубокого видения, если два сверточных слоя объединены в цепочку, любое равномерное увеличение числа их фильтров приводит к квадратичному увеличению вычислений»)
Для получения ответов на все вопросы, пожалуйста, предоставьте некоторые доказательства (документы, учебники, документация по фреймворкам), что ваш ответ правильный.
Бонусный вопрос 1
Всегда ли пул применяется только для каждой карты объектов или же для нескольких карт объектов?
Бонусный вопрос 2
Я относительно уверен, что тип 1 правильный, и что-то не так с бумагой GoogLe. Но там и 3D сверток тоже. Допустим, у вас есть 1337 карт объектов размером и вы применяете фильтр . Как вы перемещаете фильтр по картам объектов? (Слева направо, сверху вниз, от первой карты объектов до последней карты объектов?) Имеет ли это значение, если вы делаете это последовательно?3 × 4 × 5
Мое исследование
- Я прочитал две статьи сверху, но я все еще не уверен, что используется.
- Я прочитал документацию по лазаньи
- Я прочитал документацию theano
- Я прочитал ответы на Понимание сверточных нейронных сетей (не переходя по всем ссылкам)
- Я читал сверточные нейронные сети (LeNet) . Особенно рисунок 1 делает меня относительно уверенным, что Тип 2.1 является правильным. Это также соответствовало бы комментарию «квадратичной стоимости» в GoogLe Net и некоторому практическому опыту, который я имел с Caffee.