Deep Learning study

[Pytorch]torch.nn.functoinal.pad() 본문

AI/Pytorch api

[Pytorch]torch.nn.functoinal.pad()

HwaniL.choi 2020. 12. 29. 17:13
반응형
torch.nn.functional.pad(input, pad, mode='constant', value=0)

 

내가 원하는대로 padding을 줄 수 있는 함수이다.

 

pad 를 마지막 dim에만 줄 경우 (pad_left, pad_right) 모양으로 준다.

pad 를 마지막 2개의 dim에 줄 경우 (pad_left, pad_right, pad_top, pad_bottom) 모양으로 준다.

pad 를 마지막 3개의 dim에 줄 경우 (pad_left, pad_right, pad_top, pad_bottom, pad_front, pad_back) 모양으로 준다.

 

예제를 보면서 쉽게 생각해보자.

 

>>> t4d = torch.empty(3, 3, 4, 2) #쉽게 이미지를 생각하자 (batch, channel, height, width)
>>> p1d = (1, 1) # pad last dim by 1 on each side, width의 왼쪽 오른쪽에 pad 추가
>>> out = F.pad(t4d, p1d, "constant", 0) # effectively zero padding, 
>>> print(out.size()) torch.Size([3, 3, 4, 4]) # 따라서 마지막 차원인 width가 2 증가.
>>> p2d = (1, 1, 2, 2) # pad last dim by (1, 1) and 2nd to last by (2, 2),
#width 왼쪽 오른쪽에 pad 1개씩 추가, height 위 아래에 pad 2개씩 추가.
>>> out = F.pad(t4d, p2d, "constant", 0) 
>>> print(out.size()) torch.Size([3, 3, 8, 4])  
# height에 총 4개의 pad가 들어갔으므로 8, width에 2개가 들어가서 4가 되었다.
>>> t4d = torch.empty(3, 3, 4, 2) 
>>> p3d = (0, 1, 2, 1, 3, 3) # pad by (0, 1), (2, 1), and (3, 3) 
#마지막으로 (3,3) 은 channel 방향 앞 뒤로 3개씩 pad가 들어갔다.
>>> out = F.pad(t4d, p3d, "constant", 0) 
>>> print(out.size()) torch.Size([3, 9, 7, 3])
#다른건 보지 않고 channel의 차원(dimension 1)을 보면 6이 증가해서 9가 된 것을 볼 수 있다.

 

 

pytorch document 보러가기

반응형

'AI > Pytorch api' 카테고리의 다른 글

[Pytorch] torch.Tensor.view  (0) 2018.05.23
[Pytorch] torch.nn.Sequential  (0) 2018.04.02
[Pytorch] torch.nn.Upsample  (0) 2018.04.01
[Pytorch] torch.nn.Conv2d  (0) 2018.04.01
Comments