Hello Computer Vision

nn.AdaptiveAvgPool2d 란? 본문

딥러닝/파이토치

nn.AdaptiveAvgPool2d 란?

지웅쓰 2023. 1. 19. 21:33

일단 공식문서를 살펴보는게 가장 정확하니 한번 살펴보았다. 파이토치 공식문서

 

핵심이 되는 어구를 한번 찾아보자면

The output is of size H x W, for any input size. The number of output features is equal to the number of input planes.

이라고 할 수 있다.

예시로 살펴보는게 제일 빠르니 한번 보겠다.

input = torch.rand(1, 3, 3)
maxp = nn.AdaptiveAvgPool2d((2,2))
output = maxp(input)
output
tensor([[[0.1934, 0.2858],
         [0.5547, 0.6766]]])

3x3크기의 input을 넣어주었고 AdaptiveAvgPool에는 (2,2)를 넣어주었는데 그 결과는 파라미터의 크기와 같았다.

input = torch.rand(1, 5, 5)
maxp = nn.AdaptiveAvgPool2d((2,2))
output = maxp(input)
output
tensor([[[0.4823, 0.5718],
         [0.3015, 0.6687]]])

5x5크기의 input을 넣어주어도 인자를 따로 바꾸지 않는한 크기는 같은 걸 확인할 수 있다.

 

따라서 이러한 풀링은 본인이 원하는 대로 크기를 맞출 수 있다는 것이 가장 큰 특징이다.

 

23.1.30 추가) SENet에서 Global AvgPooling을 사용한 내용이 나오는데 아마 표기만 다르지 기대효과는 Adaptive AvgPooling이랑 똑같다.