Kom igångKom igång gratis

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

Visa kurs

Ö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()}')
Redigera och kör kod