ComeçarComece de graça

Criando um modelo transformer

Na PyBooks, o mecanismo de recomendação em que você está trabalhando precisa entender melhor os sentimentos nas avaliações dos usuários. Você acredita que usar transformers, uma arquitetura de ponta, pode ajudar a alcançar isso. Você decide construir um modelo transformer que consiga codificar os sentimentos nas avaliações para dar o pontapé inicial no projeto.

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

Os dados de entrada contêm frases como: "I love this product", "This is terrible", "Could be better" … e seus respectivos rótulos binários de sentimento, como: 1, 0, 0, ...

Os dados de entrada foram divididos e convertidos em embeddings nas seguintes variáveis: train_sentences, train_labels, test_sentences, test_labels, token_embeddings

Este exercício faz parte do curso

Deep Learning para Texto com PyTorch

Ver curso

Instruções do exercício

  • Inicialize o codificador do transformer.
  • Defina a camada totalmente conectada com base no número de classes de sentimento.
  • No método forward, passe a entrada pelo codificador do transformer e, em seguida, pela camada linear.

Exercício interativo prático

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

class TransformerEncoder(nn.Module):
    def __init__(self, embed_size, heads, num_layers, dropout):
        super(TransformerEncoder, self).__init__()
        # Initialize the encoder 
        self.encoder = nn.____(
            nn.____(d_model=embed_size, nhead=heads),
            num_layers=num_layers)
        # Define the fully connected layer
        self.fc = nn.Linear(embed_size, ____)

    def forward(self, x):
        # Pass the input through the transformer encoder 
        x = self.____(x)
        x = x.mean(dim=1) 
        return self.fc(x)

model = TransformerEncoder(embed_size=512, heads=8, num_layers=3, dropout=0.5)
optimizer = optim.Adam(model.parameters(), lr=1e-3)
criterion = nn.CrossEntropyLoss()
Editar e executar o código