시작하기무료로 시작하기

PyTorch 모델

OOP 방식을 사용해 모델 아키텍처를 정의해 보겠습니다. 이를 위해서는 모델 클래스를 만들고 그 안에 두 가지 메서드를 정의해야 합니다.

  • .__init__()에서는 사용할 층을 정의합니다.

  • forward()에서는 입력이 모델에 들어왔을 때 어떤 일이 일어나는지를 정의합니다. 이곳에서 입력을 미리 정의한 층에 통과시킵니다.

이제 세 개의 선형 층과 ReLU 활성화를 사용하는 모델을 만들어 보죠. 마지막 선형 층 뒤에는 이진 분류(예: 물의 음용 가능성 예측)와 잘 맞는 시그모이드 활성화를 사용해야 합니다. 여러분이 더 익숙할 수 있는 nn.Sequential()로 정의한 모델은 다음과 같습니다.

net = nn.Sequential(
  nn.Linear(9, 16),
  nn.ReLU(),
  nn.Linear(16, 8),
  nn.ReLU(),
  nn.Linear(8, 1),
  nn.Sigmoid(),
)

이 모델을 클래스로 다시 작성해 봅시다!

이 연습은 강의의 일부입니다

PyTorch로 배우는 Intermediate Deep Learning

강의 보기

연습 안내

  • .__init__() 메서드에서 제공된 모델 정의에 맞는 차원으로 세 개의 선형 층을 정의하고, 각각 self.fc1, self.fc2, self.fc3에 할당하세요.
  • forward() 메서드에서 모델 입력 x를 모든 층에 통과시키되, 첫 번째 층에서 이미 한 것과 유사하게 각 층 위에 활성화를 추가하는 것을 잊지 마세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

import torch.nn as nn
import torch.nn.functional as F

class Net(nn.Module):
    def __init__(self):
        super().__init__()
        # Define the three linear layers
        self.fc1 = ____
        self.fc2 = ____
        self.fc3 = ____
        
    def forward(self, x):
        # Pass x through linear layers adding activations
        x = nn.functional.relu(self.fc1(x))
        x = ____
        x = ____
        return x
코드 편집 및 실행