CommencezCommencez gratuitement

Créer un modèle de transformeur

Chez PyBooks, le moteur de recommandation sur lequel vous travaillez doit mieux comprendre le sentiment des évaluations des utilisateurs. Vous pensez qu'en utilisant des transformeurs, une architecture à la fine pointe, vous pourrez y arriver. Vous décidez donc de bâtir un modèle de transformeur capable d'encoder le sentiment dans les évaluations pour lancer le projet.

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

Les données d'entrée contiennent des phrases comme : « I love this product », « This is terrible », « Could be better »… et leurs étiquettes de sentiment binaires respectives, par exemple : 1, 0, 0, ...

Les données d'entrée sont séparées et converties en plongements dans les variables suivantes : train_sentences, train_labels, test_sentences, test_labels, token_embeddings

Cette activité fait partie du cours

Apprentissage profond pour le texte avec PyTorch

Voir le cours

Instructions de l’exercice

  • Initialisez l'encodeur de transformeur.
  • Définissez la couche entièrement connectée selon le nombre de classes de sentiment.
  • Dans la méthode forward, faites passer l'entrée par l'encodeur de transformeur, puis par la couche linéaire.

Exercice interactif pratique

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

class TransformerEncoder(nn.Module):
    def __init__(self, embed_size, heads, num_layers, dropout):
        super(TransformerEncoder, self).__init__()
        # Initialize the encoder 
        self.encoder = nn.____(
            nn.____(d_model=embed_size, nhead=heads),
            num_layers=num_layers)
        # Define the fully connected layer
        self.fc = nn.Linear(embed_size, ____)

    def forward(self, x):
        # Pass the input through the transformer encoder 
        x = self.____(x)
        x = x.mean(dim=1) 
        return self.fc(x)

model = TransformerEncoder(embed_size=512, heads=8, num_layers=3, dropout=0.5)
optimizer = optim.Adam(model.parameters(), lr=1e-3)
criterion = nn.CrossEntropyLoss()
Modifier et exécuter le code