PyTorch: 기본 사용법
PyTorch는 파이썬 기반의 과학 연산 패키지로, 다양한 딥러닝 모델을 구현하고 학습하기 위해 사용됩니다. 이 포스트에서는 PyTorch의 기본 사용법을 다루겠습니다.
설치하기
우선 PyTorch를 설치해야 합니다. 다음 명령어를 사용하여 PyTorch를 설치할 수 있습니다.
bash
pip install torch
텐서 생성하기
PyTorch의 핵심 데이터 구조는 텐서입니다. 텐서는 다차원 배열로, numpy의 배열과 유사한 동작을 수행합니다. 다음은 텐서를 생성하고 다양한 연산을 수행하는 예제입니다.
“`python
import torch
1D 텐서 생성
a = torch.tensor([1, 2, 3, 4, 5])
2D 텐서 생성
b = torch.tensor([[1, 2, 3], [4, 5, 6]])
텐서 모양(shape) 확인
print(a.shape) # 출력: torch.Size([5])
print(b.shape) # 출력: torch.Size([2, 3])
텐서 연산 수행
c = a + 2
d = torch.matmul(b, torch.transpose(b, 0, 1))
텐서 출력
print(c) # 출력: tensor([3, 4, 5, 6, 7])
print(d) # 출력: tensor([[14, 32],
[32, 77]])
“`
GPU 지원
PyTorch는 GPU를 사용하여 연산을 가속화할 수 있습니다. GPU로 텐서를 이동하려면 다음과 같이 코드를 수정해야 합니다.
“`python
import torch
GPU 사용 가능 여부 확인
device = torch.device(“cuda” if torch.cuda.is_available() else “cpu”)
텐서를 GPU로 옮기기
a = torch.tensor([1, 2, 3, 4, 5]).to(device)
GPU에서 텐서 연산 수행
b = a + 2
결과 출력
print(b)
“`
모델 정의하기
PyTorch를 사용하여 딥러닝 모델을 정의할 수 있습니다. 다음은 간단한 선형 회귀 모델의 예입니다.
“`python
import torch
import torch.nn as nn
선형 회귀 모델 정의
class LinearRegressionModel(nn.Module):
def init(self):
super(LinearRegressionModel, self).init()
self.linear = nn.Linear(1, 1) # 1차원 입력, 1차원 출력
def forward(self, x):
return self.linear(x)
모델 인스턴스 생성
model = LinearRegressionModel()
손실 함수 정의
loss_function = nn.MSELoss()
옵티마이저 정의
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
“`
학습하기
PyTorch를 사용하여 모델을 학습시킬 수 있습니다. 다음은 데이터를 사용하여 모델을 학습하는 예입니다.
“`python
import torch
데이터 정의
x_train = torch.tensor([[1], [2], [3], [4], [5]])
y_train = torch.tensor([[2], [4], [6], [8], [10]])
모델 학습
for epoch in range(100):
# Forward pass
y_pred = model(x_train)
# 손실 계산
loss = loss_function(y_pred, y_train)
# Backward pass 및 가중치 업데이트
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 손실 출력
print(f"Epoch {epoch+1}, Loss: {loss.item():.4f}")
“`
이 포스트에서는 PyTorch의 기본 사용법을 배웠습니다. PyTorch를 사용하여 복잡한 딥러닝 모델을 구현하고 학습시킬 수도 있으므로, 더 많은 기능에 대해서는 공식 문서를 참조하는 것이 좋습니다.
참고 문서: PyTorch 공식 문서