CommencezCommencez gratuitement

Créer un modèle GRU pour le texte

Chez PyBooks, l'équipe a été impressionnée par la performance des deux modèles que vous avez entraînés jusqu'ici. Visant l'excellence, elle veut toutefois s'assurer de choisir le meilleur modèle possible pour la tâche. On vous demande donc d'élargir le projet en expérimentant les capacités des modèles GRU, reconnus pour leur efficacité en classification de texte. Votre nouveau mandat consiste à appliquer un modèle GRU pour classer les articles du jeu de données Newsgroup dans les catégories suivantes :

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

Les progiciels suivants ont été chargés pour vous : torch, nn, optim.

Cette activité fait partie du cours

Apprentissage profond pour le texte avec PyTorch

Voir le cours

Instructions de l’exercice

  • Complétez la classe GRU avec les paramètres requis.
  • Initialisez le modèle avec les mêmes paramètres.
  • Entraînez le modèle : passez les paramètres à la fonction de critère et rétropropagez la perte.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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()}')
Modifier et exécuter le code