Python
[Pytorch] Tensor 란? 차원, 크기
메린지
2022. 12. 27. 21:14
1. Tensor
텐서: 데이터의 배열
RANK | TYPE | EX |
0 | scalar | [0] |
1 | vector | [0, 0] |
2 | matrix | [[0, 0], [0, 0]] |
3 | 3-tensor | [[[0, 0], [0, 0]], [[0, 0], [0, 0]]] |
n | n-tensor | ~ |
2. Example
HELLO WORLD
HI HELLO
HI WORLD
세 가지가 있다고 가정
2-1) one-hot encoding으로 vector를 표현
WORD | INDEX | EX |
HELLO | 0 | [1, 0, 0] |
HI | 1 | [0, 1, 0] |
WORLD | 2 | [0, 0, 1] |
2-2) 각 word를 이렇게 vector를 만들고, 이를 기반으로 sentence를 matirx로 표현
SENTENCE | EX |
HELLO WORLD | [[1, 0, 0], [0, 0, 1]] |
HI HELLO | [[0, 1, 0], [1, 0, 0]] |
HI WORLD | [[0, 1, 0], [0, 0, 1]] |
2-3) 각 sentence를 corpus로 변환해 모델에 input 하므로 corpus를 tensor로 표현
CORPUS | EX |
HELLO WORLD HI HELLO HI WORLD | [[[1, 0, 0], [0, 0, 1]], [[0, 1, 0], [1, 0, 0]], [[0, 1, 0], [0, 0, 1]]] |
위의 corpus는 이제 4차원의 word, 2차원의 Sentence, 3개의 sentence로 구성된 (3, 2, 3)의 3차원 Tensor임
이제 이 corpus tensor를 example 이라고 함
3. Tensor 생성
4. Tensor의 차원
- dim(), ndim() : tensor의 차원 반환
>>> example.dim()
3
>>> example.ndim()
3
- shape, size() : tensor 사이즈 반환
>>> example.shape
torch.Size([3, 2, 3])
>>> example.shape[1]
2
>>> example.size()
torch.Size([3, 2, 3])
>>> example.size(2)
3
- view(), reshape() : 텐서의 크기는 유지하면서 사이즈 변경
** 이 때 변수로 -1을 사용하면 ==> 자동으로 크기 변경!
>>> example.reshape(3, 6)
tensor([[1, 0, 0, 0, 0, 1],
[0, 1, 0, 1, 0, 0],
[0, 1, 0, 0, 0, 1]])
>>> exampel.view(6, -1)
tensor([[1, 0, 0],
[0, 0, 1],
[0, 1, 0],
[1, 0, 0],
[0, 1, 0],
[0, 0, 1]])