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
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()