Transformer modelini eğitme ve test etme
TransformerEncoder modeli hazırken, PyBooks'taki bir sonraki adım modeli örnek yorumlar üzerinde eğitmek ve performansını değerlendirmek. Bu örnek yorumlar üzerinde eğitim, PyBooks'un geniş arşivindeki duygu eğilimlerini anlamasına yardımcı olacak. İyi performans gösteren bir modelle, PyBooks duygu analizini otomatikleştirerek okuyuculara daha isabetli öneriler ve geri bildirimler sunabilir.
Aşağıdaki paketler senin için içe aktarıldı: torch, nn, optim.
TransformerEncoder sınıfının model örneği, token_embeddings ile train_sentences, train_labels, test_sentences, test_labels senin için önceden yüklendi.
Bu egzersiz, kursun bir parçasıdır
PyTorch ile Metin için Deep Learning
Egzersiz talimatları
- Eğitim döngüsünde, cümleleri token'lara ayır ve gömlemeleri istifle.
- Gradients'ları sıfırla ve backward geçişi yap.
predictfonksiyonunda, gradient hesaplamalarını devre dışı bırak, sonra duygu tahminini al.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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)}")