ComeçarComece de graça

Treinando e testando o modelo Transformer

Com o modelo TransformerEncoder pronto, o próximo passo na PyBooks é treinar o modelo em avaliações de exemplo e avaliar seu desempenho. Treinar nessas avaliações ajudará a PyBooks a entender as tendências de sentimento no seu vasto repositório. Ao alcançar um bom desempenho, a PyBooks poderá automatizar a análise de sentimento, garantindo que leitores recebam recomendações e feedbacks mais assertivos.

Os seguintes pacotes já foram importados para você: torch, nn, optim.

A instância model da classe TransformerEncoder, token_embeddings, e os train_sentences, train_labels, test_sentences, test_labels já estão pré-carregados para você.

Este exercício faz parte do curso

Deep Learning para Texto com PyTorch

Ver curso

Instruções do exercício

  • No loop de treino, divida as sentenças em tokens e empilhe as embeddings.
  • Zere os gradientes e execute o backward.
  • Na função predict, desative as computações de gradiente e, em seguida, obtenha a predição de sentimento.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

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 e executar o código