Crearea unui model transformer
La PyBooks, motorul de recomandare la care lucrezi are nevoie de capabilități mai avansate pentru a înțelege sentimentele din recenziile utilizatorilor. Crezi că folosirea transformerelor, o arhitectură de ultimă generație, poate fi soluția potrivită. Decizi să construiești un model transformer care să codifice sentimentele din recenzii, pentru a da startul proiectului.
Următoarele pachete au fost deja importate pentru tine: torch, nn, optim.
Datele de intrare conțin propoziții precum: "I love this product", "This is terrible", "Could be better" …
și etichetele lor binare de sentiment: 1, 0, 0, ...
Datele de intrare sunt împărțite și convertite în încorporări (embeddings) în următoarele variabile:
train_sentences, train_labels, test_sentences, test_labels, token_embeddings
Acest exercițiu face parte din cursul
Deep Learning pentru text cu PyTorch
Instrucțiuni pentru exercițiu
- Inițializează encoderul transformer.
- Definește stratul complet conectat în funcție de numărul de clase de sentiment.
- În metoda forward, treci datele de intrare prin encoderul transformer, urmat de stratul liniar.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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()