EmpezarEmpieza gratis

Crear un modelo LSTM para texto

En PyBooks, el equipo busca constantemente mejorar la experiencia de usuario aprovechando los últimos avances tecnológicos. En esta línea, te han asignado una tarea clave. Quieren que explores el potencial de otra herramienta potente: LSTM, conocida por capturar mayores complejidades en los patrones de datos. Estás trabajando con el mismo conjunto de datos de Newsgroups, y el objetivo sigue siendo el mismo: clasificar artículos de noticias en tres categorías distintas:

rec.autos, sci.med y comp.graphics.

Ya tienes cargados los siguientes paquetes: torch, nn, optim.

Este ejercicio forma parte del curso

Deep Learning para texto con PyTorch

Ver curso

Instrucciones del ejercicio

  • Configura un modelo LSTM completando las capas LSTM y lineal con los parámetros necesarios.
  • Inicializa el modelo con los parámetros necesarios.
  • Entrena el modelo LSTM restableciendo los gradientes a cero y pasando los datos de entrada X_train_seq a través del modelo.
  • Calcula la pérdida a partir de los outputs predichos y las etiquetas verdaderas.

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

# Initialize the LSTM and the output layer with parameters
class LSTMModel(nn.Module):
    def __init__(self, input_size, hidden_size, num_layers, num_classes):
        super(LSTMModel, self).__init__()
        self.hidden_size = hidden_size
        self.num_layers = num_layers
        self.lstm = nn.LSTM(____, ____, ____, batch_first=True)
        self.fc = nn.Linear(____, ____)        
    def forward(self, x):
        h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)
        c0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)
        out, _ = self.lstm(x, (h0, c0))
        out = out[:, -1, :] 
        out = self.fc(out)
        return out

# Initialize model with required parameters
lstm_model = LSTMModel(____, ____, ____, ____)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(lstm_model.parameters(), lr=0.01)

# Train the model by passing the correct parameters and zeroing the gradient
for epoch in range(10): 
    optimizer.____
    outputs = lstm_model(____)
    loss = criterion(____, y_train_seq)
    loss.backward()
    optimizer.step()
    print(f'Epoch: {epoch+1}, Loss: {loss.item()}')
Editar y ejecutar código