카테고리 없음

7편. 직접 해보는 PyTorch 기초 실습

ideas9710 2025. 12. 17. 03:27
반응형

 

앞에서 PyTorch 개념을 살펴봤다면, 이번 편에서는 실제로 손을 한번 움직여보는 시간을 가져보자.
딥러닝을 처음 공부하면 개념은 익숙해도 “어디서부터 코드를 써야 할지” 막막할 수 있다.
그래서 이번 실습은 정말 기본적인 흐름만 담았다.

주제는 세 가지다.

  1. 텐서 만들기
  2. 텐서 연산
  3. 아주 간단한 신경망 만들어보기

이 세 가지는 PyTorch를 공부할 때 가장 기초적인 단계다.


1. 텐서 만들기

딥러닝 계산의 기본은 텐서다.
리스트와 비슷해 보이지만, GPU에서 빠르게 계산하도록 만들어진 자료형이다.

기본적인 텐서는 이렇게 만든다.

import torch

# 1차원 텐서
x = torch.tensor([1, 2, 3])
print(x)

# 2차원 텐서
y = torch.tensor([[1., 2.], [3., 4.]])
print(y)

텐서는 GPU로 이동시킬 수 있다는 점도 중요하다.

x = x.to("cuda")

이 한 줄로 이후 모든 계산이 GPU에서 실행된다.


2. 텐서 연산

텐서는 수학 행렬 연산을 빠르게 처리하기 위해 만들어졌다.

가장 기본적인 연산은 다음과 같다.

a = torch.tensor([1., 2., 3.])
b = torch.tensor([4., 5., 6.])

# 요소별 연산
print(a + b)
print(a * b)

# 행렬 연산
m1 = torch.tensor([[1., 2.], [3., 4.]])
m2 = torch.tensor([[5., 6.], [7., 8.]])

print(torch.matmul(m1, m2))

이 정도 연산만 이해해도 딥러닝 내부에서 어떤 계산이 일어나는지 감이 잡힌다.


3. 아주 간단한 신경망 만들어보기

PyTorch의 핵심은 “모델을 클래스로 정의해서 직접 만들 수 있다”는 점이다.
이번 실습에서는 입력 1개, 출력 1개인 가장 단순한 신경망을 만들어보자.

1) 모델 정의

import torch.nn as nn

class SimpleNet(nn.Module):
    def __init__(self):
        super().__init__()
        self.layer = nn.Linear(1, 1)

    def forward(self, x):
        return self.layer(x)

이 모델은 말 그대로 선형 회귀 모델이다.
입력값에 가중치를 곱하고 편향을 더해 출력값을 만드는 구조다.

2) 학습 데이터 준비

예를 들어 입력 1 → 출력 2, 입력 2 → 출력 4 같은 패턴을 학습시키고 싶다고 하자.

x = torch.tensor([[1.], [2.], [3.]])
y = torch.tensor([[2.], [4.], [6.]])

3) 손실 함수와 옵티마이저 설정

model = SimpleNet()
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

4) 학습 루프

PyTorch의 전형적인 학습 패턴이다.

for epoch in range(100):
    optimizer.zero_grad()        # 기울기 초기화
    pred = model(x)              # 예측
    loss = criterion(pred, y)    # 손실 계산

    loss.backward()              # 역전파
    optimizer.step()             # 가중치 업데이트

이 과정을 반복하면 모델이 점점 더 정확하게 패턴을 맞추기 시작한다.

5) 결과 확인

print(model(x))

학습이 잘 진행됐다면
입력 1, 2, 3의 출력이 2, 4, 6과 비슷하게 나온다.


4. 이 정도만 해보면

위에서 했던 작은 예제가 앞으로 배우는 딥러닝의 모든 구조와 연결된다.

  • 텐서로 데이터를 만들고
  • 모델 클래스를 정의하고
  • 학습 루프를 돌리는 과정

LLM 같은 거대한 모델도 결국 이 구조를 훨씬 크게 확장한 것뿐이다.
이 세 가지 흐름만 익히면 PyTorch를 이해하는 데 필요한 기초는 충분하다.


 

반응형