Data Science/ML & DL
[DL, PyTorch] 벡터, 행렬, 텐서
anweh
2020. 10. 6. 21:18
1. 정의
- 스칼라: 차원이 없는 값
- 벡터: 1차원으로 구성된 값
- 행렬: 2차원으로 구성된 값 / 일반적으로 이용하는 데이터 형태 (batch size, dim)
- 텐서: 3차원으로 구성된 값 / Vision에서는 (batch size, length, dim)
2. Numpy 와 PyTorch 텐서 비교
Numpy | PyTorch | |
선언 | np.array() | torch.FloatTensor, torch.Tensor() |
차원 확인 | .ndim | .dim() |
크기 확인 | .shape | .size() |
3. 파이토치로 텐서 선언
import torch
t1 = torch.Tensor(3) #원소가 3개인 단일 텐서 선언
t2 = torch.Tensor(3, 5) #3x5의 2차원 텐서 선언
rn1 = torch.rand(3,3) # rand를 통한 a는 0에서 1사이의 uniform distribution random 값으로 선언
rn2 = torch.randn(3,3) # randn을 통한 a는 평균이 0이고 분산이 1인 normal distribution random 값으로 선언
4. 랜덤 텐서 선언
- torch.rand() : 0과 1 사이의 숫자를 균등하게 생성
- torch.rand_like() : 사이즈를 튜플로 입력하지 않고 기존의 텐서로 정의
- torch.randn() : 평균이 0이고 표준편차가 1인 가우시안 정규분포를 이용해 생성
- torch.randn_like() : 사이즈를 튜플로 입력하지 않고 기존의 텐서로 정의
- torch.randint() : 주어진 범위 내의 정수를 균등하게 생성, 자료형은 torch.float32
- torch.randint_like() : 사이즈를 튜플로 입력하지 않고 기존의 텐서로 정의
- torch.randperm() : 주어진 범위 내의 정수를 랜덤하게 생성
5. 특별한 값을 가지는 텐서 선언
- torch.arange() : 주어진 범위 내의 정수를 순서대로 생성
- torch.ones() : 주어진 사이즈의 1로 이루어진 텐서 생성
- torch.zeros() : 주어진 사이즈의 0으로 이루어진 텐서 생성
- torch.ones_like() : 사이즈를 튜플로 입력하지 않고 기존의 텐서로 정의
- torch.zeros_like() : 사이즈를 튜플로 입력하지 않고 기존의 텐서로 정의
- torch.linspace() : 시작점과 끝점을 주어진 갯수만큼 균등하게 나눈 간격점을 행벡터로 출력
- torch.logspace() : 시작점과 끝점을 주어진 갯수만큼 로그간격으로 나눈 간격점을 행벡터로 출력