읽기 컨볼 루션에 대해 더 깊이 이해하기 저는 제안 된 시작 모듈 의 빌딩 블록 인 DepthConcat 레이어를 발견했습니다 . 저자는 이것을 "필터 연결"이라고합니다. Torch 구현 이있는 것 같지만 실제로는 이해하지 못합니다. 누군가 간단한 말로 설명 할 수 있습니까?
읽기 컨볼 루션에 대해 더 깊이 이해하기 저는 제안 된 시작 모듈 의 빌딩 블록 인 DepthConcat 레이어를 발견했습니다 . 저자는 이것을 "필터 연결"이라고합니다. Torch 구현 이있는 것 같지만 실제로는 이해하지 못합니다. 누군가 간단한 말로 설명 할 수 있습니까?
답변:
시작 모듈 의 출력 이 다른 크기 라고 생각하지 않습니다 .
컨볼 루션 레이어의 경우 사람들은 종종 공간 해상도를 유지하기 위해 패딩을 사용합니다.
다른 컨볼 루션 레이어 중에서 오른쪽 아래 풀링 레이어 (파란색 프레임)가 어색해 보일 수 있습니다. 그러나 기존의 풀링 서브 샘플링 레이어 (빨간색 프레임, 보폭> 1)와 달리 풀링 레이어에는 보폭 1 을 사용했습니다 . 스트라이드 -1 풀링 레이어는 실제로 컨볼 루션 레이어와 같은 방식으로 작동하지만 컨볼 루션 연산은 max 연산으로 대체됩니다.
따라서 풀링 계층 이후의 해상도도 변경되지 않고 풀링 및 컨볼 루션 계층을 "깊이"차원으로 연결할 수 있습니다.
위의 그림에서 종이에서 볼 수 있듯이 시작 모듈은 실제로 공간 해상도를 유지합니다.
백서와 참고 자료를 읽으면서 구현에 관해 생각해 보았을 때와 동일한 질문을 염두에 두었습니다.
에서 당신이 참조 토치 코드 , 그것은 말합니다 :
--[[ 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 Answer 는 다음과 같은 명확성을 제공합니다.
Deep Neural Networks에서 깊이는 네트워크의 깊이를 나타내지 만이 문맥에서 깊이는 시각적 인식에 사용되며 이미지의 3 차원으로 변환됩니다.
이 경우 이미지가 있으며이 입력의 크기는 32x32x3 (너비, 높이, 깊이)입니다. 깊이는 훈련 이미지의 다른 채널로 변환되므로 신경망은이 매개 변수를 기반으로 학습 할 수 있어야합니다.
따라서 DepthConcat은 텐서의 마지막 차원 인 깊이 차원과이 경우 3D 텐서의 3 차원을 따라 텐서를 연결합니다.
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 결과 텐서의 사진을 볼 수 있습니다. 여기서 흰색 영역은 0으로 채워지고 빨간색은 A 텐서이며 녹색은 B 텐서입니다.
이 예제에서 DepthConcat의 의사 코드는 다음과 같습니다.
나는 이것이 같은 백서를 읽는 동일한 질문을 생각하는 다른 누군가에게 도움이되기를 바랍니다.