Aan de slagBegin gratis

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

Bekijk cursus

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.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan 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