Створення моделі трансформера
У PyBooks механізму рекомендацій, над яким ви працюєте, потрібні точніші можливості для розуміння тональності відгуків користувачів. Ви вважаєте, що трансформери — сучасна архітектура — можуть у цьому допомогти. Ви вирішили створити модель трансформера, яка зможе кодувати тональність у відгуках і таким чином розпочати проєкт.
Для вас уже імпортовано такі пакети: torch, nn, optim.
Вхідні дані містять речення на кшталт: "I love this product", "This is terrible", "Could be better" …
та відповідні бінарні мітки тональності, наприклад: 1, 0, 0, ...
Вхідні дані розділено та перетворено на вкладення (embeddings — векторні представлення) в таких змінних:
train_sentences, train_labels, test_sentences, test_labels, token_embeddings
Ця вправа є частиною курсу
Глибоке навчання для тексту з PyTorch
Інструкції до вправи
- Ініціалізуйте кодувальник трансформера.
- Визначте повнозв'язний шар відповідно до кількості класів тональності.
- У методі forward пропустіть вхід через кодувальник трансформера, а потім через лінійний шар.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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()