Search

nn.ConvTranspose2d

transposed convolution 외 다양한 convolution 을 정리한 글 https://chang-aistory.tistory.com/48?category=933534
그림으로 잘 설명 되어있는 사이트 https://github.com/vdumoulin/conv_arithmetic/blob/master/README.md
CLASStorch.nn.ConvTranspose2d(in_channelsout_channelskernel_sizestride=1padding=0output_padding=0groups=1bias=Truedilation=1padding_mode='zeros'device=Nonedtype=None)
2d transposed convolution레이어를 생성해주는 nn.convtranspose2d 클래스에 대해 살펴보겠습니다
TensorFloat32 지원 모듈
이 모듈은 input에 대한 Conv2d의 gradient라고 보여질 수 있습니다
또한 fractionally-strided convolution 이나 deconvolution이라고도 알려졌지만 deconvolution과는 다릅니다

parameters

<필수파라미터>
in_channels, out_channels, kernel_size
<optional 파라미터>
stride
padding : zero padding이 각 dimension의 both side(W, H)에 추가됨 (Default 0)
output_padding : output shape에서 각 차원에 한 부분에 추가되는 사이즈
dilation : kernel point들 간의 space를 조정하는 파라미터입니다. ( dilated convolution 에 대한 설명은 맨 위의 글 참조 ) (default : 1)
groups : input channel에서 output channel로의 blocked connections의 개수 (default :1 )
1.
groups=1 : 모든 input이 모든 output으로 연산에 참여된다
2.
groups=2 : conv연산이 나란히 두 개의 컨볼루션 레이어를 갖는 것과 같아지고, 각각은 입력 채널의 절반을 보고, 출력 채널의 절반을 생산하며, 두 개의 레이어는 나중에 concatenated 된다.
3.
groups=in_channels : 각 input channel은 각각 자신의 filter set을 갖는다, 그리고 그 filter는 out_channelin_channel\frac{out\_channel}{in\_channel} 의 사이즈를 갖는다
bias : 설정시 학습 가능한 bias 를 따로 갖는다

shape 계산

Hout=(Hin1)×stride[0]2×padding[0]+dilation[0]×(kernel_size[0]1)+out_padding[0]+1H_{out} = (H_{in}-1)\times stride[0]-2\times padding[0]+dilation[0]\times(kernel\_size[0]-1)+out\_padding[0]+1
Wout=(Win1)×stride[1]2×padding[1]+dilation[1]×(kernel_size[1]1)+out_padding[1]+1W_{out} = (W_{in}-1)\times stride[1]-2\times padding[1]+dilation[1]\times(kernel\_size[1]-1)+out\_padding[1]+1