Bygga en GRU-modell för text
På PyBooks har teamet blivit imponerat av prestandan hos de två modeller du tidigare tränat. I sin strävan efter att hitta den bästa lösningen vill de nu säkerställa att rätt modell väljs för uppgiften. Därför har de bett dig att utöka projektet genom att experimentera med GRU-modeller, som är kända för sin effektivitet vid textklassificering. Din nya uppgift är att använda GRU-modellen för att klassificera artiklar från Newsgroup-datamängden i följande kategorier:
rec.autos, sci.med och comp.graphics.
Följande paket har redan laddats in: torch, nn, optim.
Den här övningen är en del av kursen
Djupinlärning för text med PyTorch
Övningsinstruktioner
- Slutför GRU-klassen med de nödvändiga parametrarna.
- Initialisera modellen med samma parametrar.
- Träna modellen: skicka parametrarna till kriteriumfunktionen och bakåtpropagera förlusten.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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()}')