EmpezarEmpieza gratis

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

Ver curso

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