Skapa en transformermodell
På PyBooks behöver rekommendationsmotorn du arbetar med mer förfinade funktioner för att förstå känslan i användarrecensioner. Du tror att transformers – en toppmodern arkitektur – kan hjälpa dig att uppnå detta. Därför bestämmer du dig för att bygga en transformermodell som kan koda känslan i recensionerna och på så sätt komma igång med projektet.
Följande paket har importerats åt dig: torch, nn, optim.
Indata innehåller meningar som: "I love this product", "This is terrible", "Could be better" …
och deras respektive binära sentimentetiketter, till exempel: 1, 0, 0, ...
Indata är uppdelad och konverterad till inbäddningar (embeddings) i följande variabler:
train_sentences, train_labels, test_sentences, test_labels, token_embeddings
Den här övningen är en del av kursen
Djupinlärning för text med PyTorch
Övningsinstruktioner
- Initiera transformerenkodern.
- Definiera det fully connected-lagret baserat på antalet sentimentklasser.
- I forward-metoden skickar du indata genom transformerenkodern och sedan vidare genom det linjära lagret.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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()