Создание модели трансформера
В компании 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()