Entrenamiento y prueba del modelo Transformer
Con el modelo TransformerEncoder listo, el siguiente paso en PyBooks es entrenarlo con reseñas de ejemplo y evaluar su rendimiento. Entrenar con estas reseñas ayudará a PyBooks a comprender las tendencias de sentimiento en su amplio repositorio. Si se consigue un modelo con buen desempeño, PyBooks podrá automatizar el análisis de sentimiento, garantizando que las personas lectoras reciban recomendaciones y comentarios útiles.
Se han importado por ti los siguientes paquetes: torch, nn, optim.
La instancia model de la clase TransformerEncoder, token_embeddings, y train_sentences, train_labels, test_sentences, test_labels están precargados para ti.
Este ejercicio forma parte del curso
Deep Learning para texto con PyTorch
Instrucciones del ejercicio
- En el bucle de entrenamiento, divide las oraciones en tokens y apila las incrustaciones.
- Pon a cero los gradientes y realiza la retropropagación.
- En la función
predict, desactiva los cálculos de gradientes y luego obtiene la predicción de sentimiento.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
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)}")