텍스트를 위한 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()}')