ÎncepețiÎncepe gratuit

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

Vezi cursul

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()
Editează și rulează codul