НачатьНачать бесплатно

Создание модели трансформера

В компании PyBooks движок рекомендаций, над которым вы работаете, должен уметь точнее анализировать тональность отзывов пользователей. Вы считаете, что применение трансформеров — современной архитектуры глубокого обучения — поможет решить эту задачу. Чтобы дать проекту старт, вы решаете построить модель трансформера, способную кодировать тональность отзывов.

Для вас уже импортированы следующие пакеты: torch, nn, optim.

Входные данные содержат предложения, например: "I love this product", "This is terrible", "Could be better" … и соответствующие им бинарные метки тональности, например: 1, 0, 0, ...

Входные данные разделены и преобразованы в эмбеддинги (векторные представления) и хранятся в следующих переменных: 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()
Редактировать и запускать код