Навчання та тестування моделі Transformer
Маючи модель TransformerEncoder, наступний крок у PyBooks — навчити її на прикладах відгуків і оцінити якість. Навчання на цих прикладах допоможе PyBooks зрозуміти тенденції тональності у своєму великому сховищі. Коли модель працює добре, PyBooks зможе автоматизувати аналіз тональності, щоб читачі отримували змістовні рекомендації та відгуки.
Для вас імпортовано такі пакети: torch, nn, optim.
Екземпляр model класу TransformerEncoder, token_embeddings, а також train_sentences, train_labels, test_sentences, test_labels уже підготовлено для вас.
Ця вправа є частиною курсу
Глибоке навчання для тексту з PyTorch
Інструкції до вправи
- У навчальному циклі розбийте речення на токени та об'єднайте вкладення в стек.
- Обнуліть градієнти та виконайте зворотне поширення помилки.
- У функції
predictвимкніть обчислення градієнтів, а тоді отримайте прогноз тональності.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
for epoch in range(5):
for sentence, label in zip(train_sentences, train_labels):
# Split the sentences into tokens and stack the embeddings
tokens = ____
data = torch.____([token_embeddings[token] for token in ____], dim=1)
output = model(data)
loss = criterion(output, torch.tensor([label]))
# Zero the gradients and perform a backward pass
optimizer.____()
loss.____()
optimizer.step()
print(f"Epoch {epoch}, Loss: {loss.item()}")
def predict(sentence):
model.eval()
# Deactivate the gradient computations and get the sentiment prediction.
with torch.____():
tokens = sentence.split()
data = torch.stack([token_embeddings.get(token, torch.rand((1, 512))) for token in tokens], dim=1)
output = model(data)
predicted = torch.____(output, dim=1)
return "Positive" if predicted.item() == 1 else "Negative"
sample_sentence = "This product can be better"
print(f"'{sample_sentence}' is {predict(sample_sentence)}")