Як працює операція DepthConcat у програмі "Поглиблення із згортками"?


12

Читання Заглиблюючись глибше із згортками , я натрапив на шар DepthConcat , будівельний блок запропонованих початкових модулів , який поєднує вихід декількох тензорів різної величини. Автори називають це "Фільтр конкатенації". Здається, це є реалізацією для Torch , але я не дуже розумію, що це робить. Чи може хтось пояснити простими словами?

Відповіді:


9

Я не думаю, що вихідний модуль створення має різні розміри.

введіть тут опис зображення

Для звивистих шарів люди часто використовують прокладки для збереження просторової роздільної здатності.

Правий нижній шар об'єднання (синій каркас) серед інших звивистих шарів може здатися незручним. Однак, на відміну від звичайних шарів об'єднання-піддиагностики (червона рамка, крок> 1), вони використовували крок 1 у цьому шарі об'єднання . Шари об'єднання Stride-1 насправді працюють таким же чином, як і згорткові шари, але при цьому операція згортки замінюється операцією max.

Таким чином, роздільна здатність після об'єднання шару також залишається незмінною, і ми можемо об'єднати об'єднані та згорткові шари разом у розмір "глибини".

введіть тут опис зображення

Як показано на малюнку, наведеному вище, документ, модуль початку фактично зберігає просторове роздільну здатність.


6

Я мав на увазі те саме запитання, коли ви читали, що біла книга та ресурси, на які ви посилалися, допомогли мені придумати реалізацію.

У коді Факела, на який ви посилаєтесь , зазначено:

--[[ DepthConcat ]]--
-- Concatenates the output of Convolutions along the depth dimension
-- (nOutputFrame). This is used to implement the DepthConcat layer
-- of the Going deeper with convolutions paper :

Слово «глибина» у Глибокому навчанні трохи неоднозначне. На щастя, цей відповідь ТА надає ясності:

У глибоких нейронних мережах глибина позначає, наскільки глибока мережа, але в цьому контексті глибина використовується для візуального розпізнавання, і вона переходить у 3-й вимір зображення.

У цьому випадку у вас є зображення, а розмір цього входу - 32x32x3, що є (ширина, висота, глибина). Нейронна мережа повинна мати можливість вивчати на основі цих параметрів, оскільки глибина перекладається на різні канали навчальних зображень.

Отже, DepthConcat об'єднує тензори вздовж глибинного виміру, який є останнім розміром тензора, а в цьому випадку - 3-го виміру 3D-тензора.

DepthConcat повинен зробити тензори однаковими у всіх вимірах, але розмір глибини, як говорить код Факела :

-- The normal Concat Module can't be used since the spatial dimensions
-- of tensors to be concatenated may have different values. To deal with
-- this, we select the largest spatial dimensions and add zero-padding
-- around the smaller dimensions.

напр

A = tensor of size (14, 14, 2)
B = tensor of size (16, 16, 3)
result = DepthConcat([A, B])
where result with have a height of 16, a width of 16 and a depth of 5 (2 + 3). 

введіть тут опис зображення

На діаграмі вище ми бачимо зображення тензору результатів DepthConcat, де біла область - нульова накладка, червона - тензор A, а зелена - тензор B.

Ось псевдокод для DepthConcat у цьому прикладі:

  1. Подивіться на тензор A і тензор B і знайдіть найбільші просторові розміри, які в цьому випадку будуть розмірами тензора B шириною 16 і 16 висотою. Оскільки тензор А занадто малий і не відповідає просторовим розмірам тензора В, його потрібно буде застелити.
  2. Розкладіть просторові розміри тензора A нулями, додавши нулі до першого та другого розмірів, зробивши розмір тензора A (16, 16, 2).
  3. З'єднайте накладений тензор A з тензором B уздовж глибини (3-го) розміру.

Я сподіваюся, що це допоможе комусь іншому, хто думає те саме питання, читаючи цю білу книгу.


так, ідеальне вступ. Це з'єднується в напрямку глибини. Не в просторових напрямках.
Шаман Сірівардхана
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.