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