안녕하세요.
현재 이미지를 데이터셋으로 사용하는 딥러닝 모델을 짜고 있습니다.
훈련 시 다양한 사이즈의 데이터에 대해 효과적으로 학습하기 위해 훈련 데이터로 다양한 사이즈 그룹을 사용합니다.
이 때,
nn.Conv2d(in_channels, out_channels, kernel_size=5, stride=2, padding=2)
인 2d convolutional layer를 통과하고 그 후
nn.ConvTranspose2d(in_channels, out_channels, 5, stride=2, padding=2)
인 2d deconvolution layer를 통과합니다.
인채널, 아웃채널은 이 질문에선 중요한게 아니라서 저 상태로 뒀습니다
그런데 처음 들어오는 인풋의 width 및 height가 홀수일 때와 짝수일 때 그 최종 shape이 다르게 나와서 이를 어떻게 해결할지 고민입니다.
예를 들어 인풋의 사이즈가 [2, 3, 160, 160] 일 때, [2, 3, 159, 159] 일 때, [2, 3, 159, 160] 일 때 저 layer들을 통과하면 공통적으로 [2, 3, 159, 159] 인 크기의 아웃풋을 출력합니다. ConvTranspose2d에 output_padding을 다르게 적용하면 같게 할 순 있지만, 하나의 ConvTranspose2d를 이용해서 모든 사이즈를 통과시켜야하므로 적절하지 않은 방법이라 생각됩니다.
인풋과 아웃풋 사이의 추가적인 연산이 필요하여 크기를 맞춰야하는 상황인데, 말씀 드린 것과 같이 크기가 다른 문제가 발생하여 진행을 못하고 있습니다.
어떤 식으로 적용해야 모든 경우에 대해서 인풋과 아웃풋의 크기를 동일하게 맞출 수 있을까요?