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
PyTorch ile Metin için Deep Learning
kursunun bir parçasıdırEgzersiz 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ı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
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)}")