딥러닝/파이토치
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이랑 똑같다.