728x90
반응형
앞의 포스팅에 이어 텐서 조작 정리의 마지막 시간을 가지겠습니다.
포스팅은 밑의 출처에서 보고 공부한 것을 정리하였습니다.
7) 타입 캐스팅(Type Casting)
- 텐서의 자료형을 변환하는 것을 타입 캐스팅이라고 합니다.
lt = torch.LongTensor([1, 2, 3, 4])
print(lt)
print(lt.float())
출력 )
- bt라는 바이트 타입의 텐서를 만들었습니다.
bt = torch.ByteTensor([True, False, False, True])
print(bt)
출력)
- 바이트 타입의 텐서를 long과 float 타입으로 바꾸어 결과를 확인했습니다.
print(bt.long())
print(bt.float())
출력)
8) 연결하기 (concatenate)
- 딥러닝에서는 주로 모델의 입력 또는 중간 연산에서 두 개의 텐서를 연결하는 경우가 많습니다.
- 두 텐서를 연결해서 입력으로 사용하는 것은 두 가지의 정보를 모두 사용한다는 의미입니다!
x = torch.FloatTensor([[1, 2], [3, 4]]) # ( 2 x 2 )
y = torch.FloatTensor([[5, 6], [7, 8]]) # ( 2 x 2 )
print(torch.cat([x,y], dim = 0)) # ( 4 x 2 )
출력)
9) 스택킹 (stacking)
- concatenate을 하는 다른 방법으로 stacking이 있습니다. 단어 그대로 쌓는다는 의미이며 예시를 보면서 확인해봅시다.
x = torch.FloatTensor([1, 4])
y = torch.FloatTensor([2, 5])
z = torch.FloatTensor([3, 6])
print(torch.stack([x, y, z]))
출력)
- 앞서 실행해 보았던 unsqueeze도 똑같은 출력을 낼 수 있습니다.
print(torch.cat([x.unsqueeze(0), y.unsqueeze(0), z.unsqueeze(0)], dim = 0))
출력)
print(torch.stack([x, y, z], dim=1))
출력)
10) ones_like와 zeros_like
- numpy와 같이 0과 1로 채워진 텐서를 만드는 함수가 있습니다.
x = torch.FloatTensor([[0, 1, 2], [2, 1, 0]])
print(x)
print(torch.zeros_like(x))
출력)
11) In-placde Operation (덮어쓰기 연산)
x = torch.FloatTensor([[1, 2], [3, 4]]) # (2 x 2)
print(x)
print(x.mul(2.))
print(x)
- 보시면 mul을 이용하여 텐서 요소에 2를 곱하여 출력하였지만 실제로 x 텐서에 영향을 끼치진 않았습니다.
- 그렇지만 연산 뒤에 _ 를 사용하여 수행한 결과를 x에 저장하면서 결과를 출력할 수 있습니다.
print(x.mul_(2.))
print(x)
이렇게 파이토치에서 텐서를 조작하는 여러 가지 함수들을 알아보았고
다음 포스팅 부터는 머신러닝과 딥러닝의 이론적인 부분을 파이토 치로 다뤄보는 시간을 가지겠습니다
틀린 점이나 질문이 있으시면 댓글로 남겨주세요
감사합니다:)
728x90
반응형
'AI > Pytorch' 카테고리의 다른 글
[Pytorch] Transform(변형) (0) | 2021.07.27 |
---|---|
[Pytorch] Dataset과 Dataloader (0) | 2021.07.26 |
[Pytorch] 텐서(Tensor) 조작 기초(2) (0) | 2021.07.21 |
[Pytorch] 텐서(Tensor) 조작 기초(1) (0) | 2021.06.28 |