PyTorch는 Tensorflow & Keras와 매우 유사한 라이브러리이다.
PyTorch는 Meta가 개발한 딥러닝 프레임워크로, 동적 계산 그래프와 자동 미분 기능을 기반으로 딥러닝 모델 개발을 지원한다.
import torch
GPU 사용 여부
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
적용 대상
tensor.to(device) # 입력 데이터, 정답 데이터
model.to(device) # 모델
텐서를 생성하는 방법을 설명한다.
텐서: torch.tensor(data, dtype=None, requires_grad=False)
torch.tensor([1., 2., 3.])
# tensor([1., 2., 3.])
0으로 채워진 텐서: torch.zeros(*size, dtype=None)
torch.zeros((3, 4))
# tensor([[0., 0., 0., 0.],
# [0., 0., 0., 0.],
# [0., 0., 0., 0.]])
1로 채워진 텐서: torch.ones(*size, dtype=None)
torch.ones((2, 2))
# tensor([[1., 1.],
# [1., 1.]])
정규분포 난수 텐서: torch.randn(*size, dtype=None)
torch.randn((3, 3))
# tensor([[ 0.4310, -0.9804, -2.3887],
# [ 1.2938, -0.8888, 0.2801],
# [-1.9922, 0.2642, 0.2148]])
균등분포 난수 텐서: torch.rand(*size, dtype=None)
torch.rand((3, 3))
# tensor([[0.3088, 0.8024, 0.0257],
# [0.0589, 0.5455, 0.3724],
# [0.0071, 0.5527, 0.1320]])
범위 텐서 생성: torch.arange(start=0, end, step=1, dtype=None)
torch.arange(0, 10, 2)
# tensor([0, 2, 4, 6, 8])
균등 간격 생성: torch.linspace(start, end, steps, dtype=None)
torch.linspace(-5, 5, 1000)
# tensor([-5.0000, -4.9900, -4.9800, -4.9700, -4.9600, -4.9499, -4.9399, -4.9299,
# ...
# 4.9299, 4.9399, 4.9499, 4.9600, 4.9700, 4.9800, 4.9900, 5.0000])
Tensorflow의 연산 방법은 Numpy와 유사한 방법이 많이 있다.
x = torch.tensor([10., 20., 30.])
y = torch.tensor([1., 2., 3.])
Indexing
x[1]
# tensor(20.)
Slicing
x[1:]
# tensor([20., 30.])