PyTorch 튜토리얼 따라하기
(https://9bow.github.io/PyTorch-tutorials-kr-0.3.1/index.html)
'Tensor'는 행렬 연산을 위한 단위이다.
예를 들어 초기화되지 않은 5x3 행렬을 생성할 수 있다.
1 2 3 4 | import torch x = torch.Tensor(5, 3) print(x) | cs |
tensor([[1.2901e-36, 0.0000e+00, 5.7453e-44], [0.0000e+00, nan, 3.0352e+32], [1.3733e-14, 6.4076e+07, 2.0706e-19], [7.3909e+22, 2.4176e-12, 1.1625e+33], [8.9605e-01, 1.1632e+33, 5.6003e-02]])
또한 행렬의 연산도 지원한다.
1 2 | y = torch.rand(5, 3) print(x + y) | cs |
tensor([[1.2036e-01, 9.5249e-01, 1.0348e-01], [1.8238e-01, nan, 3.0352e+32], [1.2837e-01, 6.4076e+07, 1.4449e-01], [7.3909e+22, 3.9386e-01, 1.1625e+33], [1.4848e+00, 1.1632e+33, 9.6642e-01]])
12345678 print(torch.add(x, y))result = torch.Tensor(5, 3)torch.add(x, y, out=result)print(result)y.add_(x)print(y)cs
tensor([[1.2036e-01, 9.5249e-01, 1.0348e-01], [1.8238e-01, nan, 3.0352e+32], [1.2837e-01, 6.4076e+07, 1.4449e-01], [7.3909e+22, 3.9386e-01, 1.1625e+33], [1.4848e+00, 1.1632e+33, 9.6642e-01]]) tensor([[1.2036e-01, 9.5249e-01, 1.0348e-01], [1.8238e-01, nan, 3.0352e+32], [1.2837e-01, 6.4076e+07, 1.4449e-01], [7.3909e+22, 3.9386e-01, 1.1625e+33], [1.4848e+00, 1.1632e+33, 9.6642e-01]]) tensor([[1.2036e-01, 9.5249e-01, 1.0348e-01], [1.8238e-01, nan, 3.0352e+32], [1.2837e-01, 6.4076e+07, 1.4449e-01], [7.3909e+22, 3.9386e-01, 1.1625e+33], [1.4848e+00, 1.1632e+33, 9.6642e-01]])
또한 tensor로 만들어진 것은 배열처럼 인덱싱 표기가 가능하다.
1 print(x[:, 1])cs tensor([0.0000e+00, nan, 6.4076e+07, 2.4176e-12, 1.1632e+33])만들어진 행렬의 크기와 모양을 변화시킬 수 있다.
이 때, view의 인자에 '-1'을 넣게 되면, 다른 인자를 통해 사이즈를 유추해서 넣게 된다.
1 2 3 4 | x = torch.randn(4, 4) y = x.view(16) z = x.view(-1, 8) # 사이즈가 -1인 경우 다른 차원들을 사용하여 유추합니다. print(x.size(), y.size(), z.size()) | cs |
torch.Size([4, 4]) torch.Size([16]) torch.Size([2, 8])