728x90
반응형
텐서는 파이토치에서 가장 기본이 되는 데이터 구조이다. 넘파이의 ndarray와 비슷하며 GPU에서의 연산도 가능하다.
1. 텐서(tensor) 생성
import torch
print(torch.tensor([[1,2],[3,4]])) # 2차원 형태의 텐서 생성
print(torch.tensor([[1,2],[3,4]], device = "cuda:0")) # GPU에 텐서 생성
print(torch.tensor([[1,2],[3,4]], dtype = torch.float64))# dtype을 이용하여 텐서 생성
2. 텐서를 ndarray로 변환
temp = torch.tensor([[1,2],[3,4]])
temp.numpy() # 텐서를 ndarray로 변환
temp.to("cpu").numpy() # GPU상의 텐서를 CPU의 텐서로 변환한 후 ndarray로 변환
3. 텐서의 자료형
- torch.FloatTensor : 32비트의 부동 소수점
- torch.DoubleTensor : 64비트의 부동 소수점
- torch.LongTensor : 64비트의 부호가 있는 정수
이와에도 다양한 유형의 텐서가 존재한다.
4. 텐서의 인덱스 / 슬라이스
텐서는 넘파이의 ndarray를 조작하는 것과 유사하게 동작하기 때문에 배열처럼 인덱스를 바로 지정하거나 슬라이스 등을 사용할 수 있다.
temp = torch.FloatTensor([1,2,3,4,5,6,7])
print(temp[0], temp[1], temp[-1])
print(temp[2:5],temp[4:-1])
5. 텐서 연산
텐서는 넘파이의 ndarray와 같이 다양한 수학 연산이 가능하며, GPU를 사용하면 더 빠르게 연산할 수 있다. 참고로 텐서 간의 타입이 다르면 연산이 불가능하다.
v = torch.tensor([1,2,3])
w = torch.tensor([3,4,6])
print(w-v)
6. 텐서 조작(view)
view는 넘파이의 reshape과 유사하다.
temp = torch.tensor([[1,2],[3,4]]) # 2x2 행렬 생성
temp
temp.view(4,1) # 2x2 -> 4x1 변형
temp.view(-1) # 2x2 -> 1차원 벡터
temp.view(1,-1) # 2x2 -> 1x4
728x90
반응형
'pytorch' 카테고리의 다른 글
[pytorch] 2. 모델 파라미터(손실 함수/ 옵티마이저 / 학습률 스케줄러) (0) | 2023.04.04 |
---|---|
[pytorch] 1. 모델 정의 (nn.Module / nn.Sequential) (0) | 2023.03.22 |
[pytorch] pytorch 특징 / pytorch 아키텍처 / pytorch 장점 / pytorch API 종류 (0) | 2023.03.14 |
[pytorch] 딥러닝 학습 순서 / 딥러닝의 종류 (0) | 2023.03.12 |
[pytorch] 머신러닝 딥러닝의 차이 / 머신러닝 학습 순서 (0) | 2023.03.12 |