Aan de slagGa gratis aan de slag

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

Cursus bekijken

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()
Code bewerken en uitvoeren