Vytvoření transformer modelu
V PyBooks potřebuje doporučovací systém, na kterém pracuješ, kvalitnější nástroj pro porozumění sentimentu uživatelských recenzí. Věříš, že transformery – moderní architektura na špičkové úrovni – ti s tím pomůžou. Rozhodneš se proto postavit transformer model, který dokáže zakódovat sentiment recenzí a nastartovat celý projekt.
Následující balíčky už jsou naimportovány: torch, nn, optim.
Vstupní data obsahují věty jako: "I love this product", "This is terrible", "Could be better" …
a jejich odpovídající binární štítky sentimentu, například: 1, 0, 0, ...
Vstupní data jsou rozdělena a převedena na embeddingy v těchto proměnných:
train_sentences, train_labels ,test_sentences,test_labels,token_embeddings
Toto cvičení je součástí kurzu
Deep Learning for Text with PyTorch
Pokyny k cvičení
- Inicializuj transformer enkodér.
- Definuj plně propojenou vrstvu na základě počtu tříd sentimentu.
- V metodě forward předej vstup přes transformer enkodér a následně přes lineární vrstvu.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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()