파이토치(Pytorch) 딥러닝

송범·2025년 10월 10일

대표적인 딥러닝 프레임워크로는 텐서플로(TensorFlow), 케라스(Keras), 파이토치(Pytorch)가 있습니다.

  • 텐서플로는 케라스를 고수준 API를 사용하고 있으며, 정적 계산 그래프를 사용합니다.

  • 파이토치는 동적 계산 그래프를 활용하며, 변수를 호출할 때 그래프를 만들어가면서 사용합니다.

파이토치의 권고 코딩 스타일

파이토치는 클래스(Class)를 사용하도록 권고합니다. 크게 신경망의 동작을 정의하는 모듈 클래스와 데이터를 다루는 데이터셋 클래스가 있습니다.

1) 모듈 클래스를 이용해 신경망을 만듭니다.

2) 데이터셋 클래스를 이용해 데이터를 불러와 학습을 합니다

파이토치의 딥러닝 신경망은 모두 모듈(nn.Module 클래스)로 구성되어 있습니다.

파이토치 신경망의 기본 구성

class Net(nn.Module):
    def __init__(self):
        super().__init__()
        # 신경망 구성요소를 정의합니다
        
    def forward(self, input):
    
        # 신경망의 동작을 정의합니다.
        
        return output
  • 모듈 클래스는 신경망의 구성요소를 정의하는 __init__ 함수와 신경망의 동작을 정의하는 forward() 함수로 구성되어 있습니다. 파이토치는 미리 정의해둔 신경망 모듈을 제공합니다.

데이터를 호출하는 데이터셋 클래스

class Dataset():
    def __init__(self):
        
        # 필요한 데이터 불러오기
    
    def __len__(self):
        
        # 데이터의 개수 반환
        return len(data)
    
    def __getitem__(self, i):
        # i번째 입력 데이터와
        # i번째 정답을 반환
        
        return data[i], label[i]

데이터셋 클래스의 구성요소는 세 가지입니다.

  • __init__() : 학습에 사용할 데이터를 불러옵니다.
  • __len__() : 데이터 개수를 반환합니다.
  • __getitem__() : 우리가 지정한 i번쨰 입력 데이터와 정답을 반환합니다.

모듈 클래스와 데이터셋 클래스를 이용한 딥러닝 학습을 진행하는 뼈대

# 데이터로더로부터 데이터와 정답을 받아옵니다.
for data, label in DataLoader():
    # 1. 모델의 예측값 계산
    prediction = model(data)
    
    # 2. 손실 함수를 이용해 오차 계산
    loss = LossFunction(prediction, label)
    
    # 3. 오차 역전파
    loss.backward()
    
    # 4. 신경망 가중치 수정
    optimizer.step()
  • 파이토치는 학습에 사용할 입력 데이터와 정답을 불러오는 데이터 로더를 사용합니다.

1) 모델의 예측값을 계산

2) 손실 함수(loss function)를 이용해 신경망의 오차를 계산

3) 파이토치의 backward() 메서드를 이용해 오차를 역전파한 다음,

4) step() 메서드를 이용해 신경망의 가중치를 수정합니다.

딥러닝 문제 해결 프로세스

1) 해결할 문제 정의 : 가장 먼저 해결할 문제를 정의합니다

ex) 이미지를 읽어들여 분류하기, 문장안에 비어 있는 단어를 알아맞추기 등

2) 데이터 수집 : 문제를 푸는 데 필요한 데이터를 수집합니다. 딥러닝은 데이터를 기반으로 학습이 이루어짐.

3) 데이터 가공 : 데이터를 수집하다 보면 정답이 잘못된 데이터, 혹은 문제 해결에 도움이 되지 않는 데이터 등이 섞이게 되며, 해당 데이터들은 학습에 악영향을 미치므로 데이터를 제거해줘야 합니다.

  • 딥러닝 모델의 입력으로 사용하기 전에 학습이 원활하게 이루어지도록 가공하는 작업이 데이터 전처리입니다.

4) 딥러닝 모델 설계 : 해결할 문제에 알맞는 딥러닝 모델을 설계합니다.

5) 딥러닝 모델 학습 : 딥러닝 모델의 설계를 완료한 후 데이터를 딥러닝 모델의 입력으로 주면 예측이 올바른지 정답과 비교해가면 모델을 학습합니다.

  • 모델을 학습할 때 얼마나 올바르게 학습했는가를 근사적으로 나타내는 수치를 손실(loss)이라고 하는데 이 손실이 작아지도록 학습합니다.

6) 성능 평가 : 마지막으로 학습 때 이용하지 않은 데이터를 이용해서 학습이 완료된 모델의 성능을 평가합니다.

  • 딥러닝 모델의 성능을 평가하는 데 평가 지표를 이용합니다.

profile
BackEnd&Data Scientist가 되고 싶은 개발 기록 노트

0개의 댓글