Een transformermodel maken
Bij PyBooks heeft de aanbevelingsengine waaraan je werkt verfijndere mogelijkheden nodig om de sentimenten in gebruikersreviews te begrijpen. Je denkt dat transformers, een state-of-the-art architectuur, daarbij kunnen helpen. Je besluit een transformermodel te bouwen dat de sentimenten in de reviews kan encoderen om het project op gang te brengen.
De volgende pakketten zijn alvast voor je geïmporteerd: torch, nn, optim.
De invoergegevens bevatten zinnen zoals: "I love this product", "This is terrible", "Could be better" …
met hun bijbehorende binaire sentimentlabels zoals: 1, 0, 0, ...
De invoerdata is opgesplitst en omgezet naar embeddings in de volgende variabelen:
train_sentences, train_labels, test_sentences, test_labels, token_embeddings
Deze oefening maakt deel uit van de cursus
Deep Learning voor tekst met PyTorch
Oefeninstructies
- Initialiseer de transformer-encoder.
- Definieer de volledig verbonden laag op basis van het aantal sentimentklassen.
- Laat in de forward-methode de input door de transformer-encoder gaan, gevolgd door de lineaire laag.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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()