덕배의 블로그
텐서 크기 변경, 차원 제거, 타입 캐스팅 파이토치(pytorch)로 실습하기 본문
텐서의 크기 변경, 차원 제거, 타입 캐스팅
텐서의 크기 변경, 차원 제거, 타입 캐스팅 등등 다양한 실습을 해보기 전에 벡터, 행렬, 텐서에 대해서 정확한 개념을 알고 싶다면 밑에 사이트를 참고하자
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.])
이렇게 다양한 파라미터를 사용해 보았는데 독자에게 도움이 되었으면 좋겠다!
'인공지능' 카테고리의 다른 글
딥러닝 선형 회귀(Linear Regression), 경사 하강법을 알고 파이토치로 실습해보자 (0) | 2023.08.09 |
---|---|
텐서 연결, 스택킹을 파이토치(pytorch) 실습해보기 (0) | 2023.08.08 |
벡터, 행렬, 텐서의 개념 pytorch(파이토치) 실습해보기 (2) | 2023.08.06 |
벡터, 행렬, 텐서를 이해하고 Numpy(넘파이)로 실습해보기 (0) | 2023.08.05 |
딥러닝 알고리즘 5가지를 쉽게 이해해볼까? (0) | 2023.07.30 |