본문 바로가기

Deep Learning Tools/Torch

Torch 튜토리얼

PyTorch 튜토리얼 따라하기

(https://9bow.github.io/PyTorch-tutorials-kr-0.3.1/index.html)


'Tensor'는 행렬 연산을 위한 단위이다.

예를 들어 초기화되지 않은 5x3 행렬을 생성할 수 있다.

1
2
3
4
import torch
 
= torch.Tensor(53)
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
= torch.rand(53)
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]])


1
2
3
4
5
6
7
8
print(torch.add(x, y))
 
result = torch.Tensor(53)
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
= torch.randn(44)
= x.view(16)
= x.view(-18)  # 사이즈가 -1인 경우 다른 차원들을 사용하여 유추합니다.
print(x.size(), y.size(), z.size())
cs

 torch.Size([4, 4]) torch.Size([16]) torch.Size([2, 8])