본문 바로가기

STUDY/인공지능

torch.unsqueeze , torch.squeeze, torch.cat 설명

728x90

차원 변경을 위함.

 

* torch.unsqueeze(input, dim) 

  • input : tensor
  • dim : int

1을 어느 dim에 추가 할건지? 정하는 것

 

x = torch.unsqueeze(x,dim)

[ 예시]

오리지널 입력을 만들어 놓는다. (3, 3)형태임.

 

이와 같이 dim을 0으로 한 후 unsqueeze 하면 0차원 자리에 1이 들어가는 것을 알 수 있음.

모양 또한 (1, 3, 3)에 맞춰서 바뀜

 

이와 같이 dim을 1으로 한 후 unsqueeze 하면 1차원 자리에 1이 들어가는 것을 알 수 있음.

모양 또한 (3, 1, 3)에 맞춰서 바뀜

 

이와 같이 dim을 2으로 한 후 unsqueeze 하면 2차원 자리에 1이 들어가는 것을 알 수 있음.

모양 또한 (3, 3, 2)에 맞춰서 바뀜

 

예시에서 본 것과 같이 차원 변경을 하고 싶을 경우에 사용됨.

 

 


* torch.squeeze(input, dim=None) 

  • input : tensor
  • dim : int

1인 차원을 모두 제거해줌.

 

[예시]

 

위 예시와 같이 squeeze는 unsqueeze된 텐서의 모양에서 1인 차원을 제거해줌

 


* torch.cat(input, dim=0, *, out=None) 

  • input : tensor
  • dim : int

주어진 텐서를 연결해줌. 이를 실행하기 위해 텐서의 모양이 같거나 비어 있어야 함.

 

[예시]

위와 같이 오리지널 텐서가 주어졌을 때

cat을 취하면 위와 같이 원하는 모양대로 이어지는 것을 알 수 있음.

y 와 같이 x와 다른 모양의 텐서가 주어졌을 때

cat을 취하면 위와 같이 차원이 맞지 않는다는 오류가 뜸!

728x90