Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

덕배의 블로그

텐서 크기 변경, 차원 제거, 타입 캐스팅 파이토치(pytorch)로 실습하기 본문

인공지능

텐서 크기 변경, 차원 제거, 타입 캐스팅 파이토치(pytorch)로 실습하기

김덕배_KDB 2023. 8. 7. 00:05
반응형

텐서의 크기 변경, 차원 제거, 타입 캐스팅

텐서의 크기 변경, 차원 제거, 타입 캐스팅 등등 다양한 실습을 해보기 전에 벡터, 행렬, 텐서에 대해서 정확한 개념을 알고 싶다면 밑에 사이트를 참고하자

 

https://rkdtmdqja98.tistory.com/31

 

벡터, 행렬, 텐서를 이해하고 Numpy(넘파이)로 실습해보기

딥러닝의 기본적인 단위 딥 러닝의 가장 기본적인 단위는 벡터, 행렬, 텐서이다. 차원이 없는 값을 스칼라 딥러닝을 할 때 다루고 있는 행렬 또는 텐서의 크기를 고려하는 것은 중요하기에 딥러

kdbeom.com

 

또 파이토치로 다양하게 실습해보고 싶다면 밑에 링크를 참고하자

 

https://rkdtmdqja98.tistory.com/32

 

벡터, 행렬, 텐서의 개념 pytorch(파이토치) 실습해보기

벡터, 행렬, 텐서 벡터, 행렬, 텐서를 실습하기 전에 개념에 대해서 정확하게 알고 가면 좋을 듯하여 밑에 링크를 걸어놨으니 참고하자 https://rkdtmdqja98.tistory.com/31 벡터, 행렬, 텐서를 이해하고 Num

kdbeom.com

 

파이토치 view

텐서의 크기를 변경해 준다.

 

  • -1은 첫 번째 차원은 사용자가 잘 모르겠으니 파이토치에 맡기겠다는 의미
  • 3은 두 번째 차원의 길이는 3을 가지도록 하라는 의미
  • (2, 2, 3) -> (2 × 2, 3) -> (4, 3)
  • view는 기본적으로 변경 전과 변경 후의 텐서 안의 원소의 개수가 유지되어야 한다.
t = np.array([[[0, 1, 2],
               [3, 4, 5]],
              [[6, 7, 8],
               [9, 10, 11]]]) #3차원 텐서
print(ft.shape)               
torch.Size([2, 2, 3])     #3차원 텐서
               
print(ft.view([-1, 3]))          #3차원을 2차원으로 변경  
tensor([[ 0.,  1.,  2.],
        [ 3.,  4.,  5.],
        [ 6.,  7.,  8.],
        [ 9., 10., 11.]])
        
print(ft.view([-1, 3]).shape)	
torch.Size([4, 3])

 

스퀴즈 squeeze

스퀴즈는 차원이 1인 겨우 해당 차원 제거

 

ft = torch.FloatTensor([[0], [1], [2]])

print(ft.shape)
torch.Size([3, 1])

print(ft.squeeze())
tensor([0., 1., 2.])

print(ft.squeeze().shape)
torch.Size([3])

 

언스퀴즈 unsqueeze

언스퀴즈는 특정 위치에 1인 차원을 추가

ft = torch.Tensor([0, 1, 2])

print(ft.shape)
torch.Size([3])

print(ft.unsqueeze(0))
tensor([[0., 1., 2.]])

print(ft.unsqueeze(0).shape)
torch.Size([1, 3])

 

unsqueeze의 인자 값 1을 넣으면

print(ft.unsqueeze(1))
print(ft.unsqueeze(1).shape)

tensor([[0.],
        [1.],
        [2.]])
torch.Size([3, 1])

 

  • view(), squeeze(), unsqueeze()는 텐서의 원소 수를 그대로 유지하면서 모양과 차원을 조절한다.

 

타입 캐스팅

32비트의 부동 소수점은 torch.FloatTensor

64비트의 부호 있는 정수는 torch.LongTensor

GPU 연산을 위한 자료형은 torch.cuda.FloatTensor

 

x = torch.LongTensor([1, 2, 3, 4])

print(x.float())
tensor([1., 2., 3., 4.])

 

byte 타입

 

bt = torch.ByteTensor([True, False, False, True])
print(bt)

tensor([1, 0, 0, 1], dtype=torch.uint8)

print(bt.long())
print(bt.float())
tensor([1, 0, 0, 1])
tensor([1., 0., 0., 1.])

 

 

 

이렇게 다양한 파라미터를 사용해 보았는데 독자에게 도움이 되었으면 좋겠다!