Attention please

Transposed Convolution 원리 및 Pytorch 구현 본문

딥러닝/CNN

Transposed Convolution 원리 및 Pytorch 구현

Seongmin.C 2022. 12. 30. 13:11
728x90

다양한 convolution 기법들


이번 글에서는 Transposed Convolution에 대해 알아보자. 이 convolution 기법은 Deconvolution 이라는 이름으로 많이 쓰이지만 이는 잘못된 표현이다. Deconvolution은 이전의 convolution 작업을 되돌려 output을 원본 input으로 되돌리는 것이다. 

 

2D Convolution

 

2D Deconvolution

 

Transposed Convolution 역시 같은 spatial dimension을 만들어낸다는 점에서 Deconvolution과 유사하지만 Transpose Convolution은 일반적인 Convolution 값을 되돌리는 못해 원본 input과 달라지며 dimension만 되돌려 준다. 즉, Transposed Convolution과 Deconvolution은 분명한 차이가 있다.

 

 

 

Original Convolution의 연산 과정은 다음과 같다.

 

2D Original Convolution

 

이렇게 연산된 Output 데이터와 kernel을 Transposed Convolution을 통해 Input 데이터를 추출한다.

 

2D Transposed Convolution

 

위와 같이 Original Convolution에서의 kernel matrix를 transpose 해주어 output matrix와 dot product를 진행한다. 그렇게 나온 4x4 matrix는 Original Convolution의 Input 데이터의 크기와 동일하다.

 

 

 

 

 

 

코드 구현

Transposed Convolution은 pytorch에 이미 구현되어있다.

 

torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, 
       		 output_padding=0, groups=1, bias=True, dilation=1, padding_mode='zeros', 
            	device=None, dtype=None)

각 파라미터에 대한 설명은 다음 링크에 있다.

 

 

 

728x90
Comments