Créer un modèle Transformer
Chez PyBooks, le moteur de recommandation sur lequel vous travaillez doit mieux comprendre le ressenti exprimé dans les avis des utilisateurs. Vous pensez qu’exploiter les Transformers, une architecture de pointe, peut vous y aider. Vous décidez donc de construire un modèle Transformer capable d’encoder les sentiments présents dans les avis pour lancer le projet.
Les packages 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 binaires de sentiment correspondantes, par exemple : 1, 0, 0, ...
Les données d’entrée sont divisées et converties en embeddings dans les variables suivantes :
train_sentences, train_labels, test_sentences, test_labels, token_embeddings
Cet exercice fait partie du cours
Deep Learning pour le texte avec PyTorch
Instructions
- Initialisez l’encodeur Transformer.
- Définissez la couche entièrement connectée en fonction du nombre de classes de sentiment.
- Dans la méthode forward, faites passer l’entrée par l’encodeur Transformer, puis par la couche linéaire.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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()