Home [PyTorch] nn.Upsample()
Post
Cancel

[PyTorch] nn.Upsample()

nn.Upsample()

1
2
3
4
5
6
torch.nn.Upsample(
    size: Optional[Union[T, Tuple[T, ...]]] = None, 
    scale_factor: Optional[Union[T, Tuple[T, ...]]] = None, 
    mode: str = 'nearest', 
    align_corners: Optional[bool] = None
)

Upsample() 함수는 1D, 2D, 3D 데이터를 입력으로 받을 수 있다. Dimension은 Batch size를 제외한 크기이다. 따라서 입력은 batch size x channel x height x width가 된다.

중요한 건 어떤 방식으로 output의 크기를 명시할 것인가이다. → size or scale_factor 사용

size는 특정 사이즈로 Upsampling을 하는 방법이다. 즉, 정확한 사이즈를 정해준다. scale_factor는 현재 input 대비 몇 배를 해줄 것인지를 정하는 방법이다. 둘 중 어떠한 것을 사용해도 상관은 없지만, 모호성을 줄이기 위해 하나만 사용한다.

Upsample() vs ConvTranspose2d()

Upsample()은 파라미터 없이 이미지를 확장 시키고, ConvTranspose2d()는 파라미터가 존재하는 이미지 확장이다. 쉽게 말해서, Conv2d()를 반대로 한다고 생각하면 된다.

1
2
3
4
5
# nn.ConvTranspose2d()
nn.ConvTranspose2d(in_channels, out_shannels, kernel_size, stride=0, padding=1, bias=True)

# nn.Upsampel()
nn.Upsample(scale_factor=2, mode='bilinear')
This post is licensed under CC BY 4.0 by the author.