ПочатиПочніть безкоштовно

Створення моделі трансформера

У 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()
Редагувати та запускати код