EmpezarEmpieza gratis

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

Ver curso

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)}")
Editar y ejecutar código