시작하기무료로 시작하기

텍스트를 위한 GRU 모델 구축

PyBooks 팀은 이전에 여러분이 학습한 두 모델의 성능에 깊은 인상을 받았어요. 하지만 최적의 성과를 위해, 현재 작업에 가장 적합한 모델을 확실히 선택하고자 합니다. 그래서 텍스트 분류에서 효율성과 효과로 잘 알려진 GRU 모델의 역량을 실험해 프로젝트를 확장해 달라고 요청했어요. 이번 과제는 GRU 모델을 적용해 Newsgroup 데이터셋의 기사를 다음 범주로 분류하는 것입니다:

rec.autos, sci.med, comp.graphics.

다음 패키지가 미리 로드되어 있습니다: torch, nn, optim.

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

PyTorch로 배우는 텍스트 딥러닝

강의 보기

연습 안내

  • 필요한 매개변수로 GRU 클래스를 완성하세요.
  • 동일한 매개변수로 모델을 초기화하세요.
  • 모델을 학습하세요: criterion 함수에 매개변수를 전달하고, 손실에 대해 역전파를 수행하세요.

실습형 인터랙티브 연습

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

# Complete the GRU model
class GRUModel(nn.Module):
    def __init__(self, input_size, hidden_size, num_layers, num_classes):
        super(GRUModel, self).__init__()
        self.hidden_size = hidden_size
        self.num_layers = num_layers
        self.gru = ____
        self.fc = nn.Linear(hidden_size, num_classes)       
    def forward(self, x):
        h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size) 
        out, _ = self.gru(x, h0)
        out = out[:, -1, :] 
        out = self.fc(out)
        return out

# Initialize the model
gru_model = ____
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(gru_model.parameters(), lr=0.01)

# Train the model and backpropagate the loss after initialization
for epoch in range(15): 
    optimizer.zero_grad()
    outputs = ____
    loss = criterion(____, y_train_seq)
    ____
    optimizer.step()
    print(f'Epoch: {epoch+1}, Loss: {loss.item()}')
코드 편집 및 실행