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
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()