Я имел в виду тот же вопрос, что и вы, читая этот технический документ и ресурсы, на которые вы ссылались, которые помогли мне придумать реализацию.
В коде Факела, на который вы ссылаетесь , написано:
--[[ 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 :
Слово «глубина» в глубоком обучении немного неоднозначно. К счастью, этот SO Ответ дает некоторую ясность
В глубоких нейронных сетях глубина относится к глубине сети, но в этом контексте глубина используется для визуального распознавания и переводится в 3-е измерение изображения.
В этом случае у вас есть изображение, и размер этого ввода составляет 32x32x3 (ширина, высота, глубина). Нейронная сеть должна быть способна обучаться на основе этих параметров, поскольку глубина переводится в разные каналы обучающих изображений.
Таким образом, DepthConcat объединяет тензоры по измерению глубины, которое является последним измерением тензора и в данном случае 3-м измерением трехмерного тензора.
DepthConcat должен сделать тензоры одинаковыми во всех измерениях, кроме измерения глубины, как говорит код Torch :
-- 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 в этом примере:
- Посмотрите на тензор A и тензор B и найдите наибольшие пространственные размеры, которые в этом случае были бы 16 ширины тензора B и 16 размеров высоты. Поскольку тензор A слишком мал и не соответствует пространственным размерам тензоров B, его необходимо дополнить.
- Заполните пространственные размеры тензора А нулями, добавив нули к первому и второму измерениям, создав размер тензора А (16, 16, 2).
- Конкатенированный тензор A с тензором B по глубине (3-й) размерности.
Я надеюсь, что это поможет кому-то еще, кто думает о том же вопросе, читая этот документ.