Crear un modelo transformer
En PyBooks, el motor de recomendaciones en el que trabajas necesita capacidades más finas para entender el sentimiento de las reseñas de usuarios. Crees que usar transformers, una arquitectura de última generación, puede ayudar a lograrlo. Decides construir un modelo transformer que pueda codificar los sentimientos en las reseñas para poner en marcha el proyecto.
Se han importado por ti los siguientes paquetes: torch, nn, optim.
Los datos de entrada contienen frases como: "I love this product", "This is terrible", "Could be better" …
y sus respectivas etiquetas binarias de sentimiento como: 1, 0, 0, ...
Los datos de entrada se dividen y convierten a embeddings en las siguientes variables:
train_sentences, train_labels, test_sentences, test_labels, token_embeddings
Este ejercicio forma parte del curso
Deep Learning para texto con PyTorch
Instrucciones del ejercicio
- Inicializa el codificador transformer.
- Define la capa totalmente conectada en función del número de clases de sentimiento.
- En el método forward, pasa la entrada por el codificador transformer y, a continuación, por la capa lineal.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
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()