Crear un modelo GRU para texto
En PyBooks, el equipo ha quedado impresionado con el rendimiento de los dos modelos que entrenaste anteriormente. Sin embargo, en su búsqueda de la excelencia, quieren asegurarse de elegir el mejor modelo posible para la tarea. Por ello, te han pedido que amplíes el proyecto experimentando con las capacidades de los modelos GRU, conocidos por su eficiencia y eficacia en tareas de clasificación de texto. Tu nueva tarea es aplicar el modelo GRU para clasificar artículos del conjunto de datos Newsgroup en las siguientes categorías:
rec.autos, sci.med y comp.graphics.
Se han cargado los siguientes paquetes para ti: torch, nn, optim.
Este ejercicio forma parte del curso
Deep Learning para texto con PyTorch
Instrucciones del ejercicio
- Completa la clase GRU con los parámetros necesarios.
- Inicializa el modelo con los mismos parámetros.
- Entrena el modelo: pasa los parámetros a la función de criterio y retropropaga la pérdida.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# Complete the GRU model
class GRUModel(nn.Module):
def __init__(self, input_size, hidden_size, num_layers, num_classes):
super(GRUModel, self).__init__()
self.hidden_size = hidden_size
self.num_layers = num_layers
self.gru = ____
self.fc = nn.Linear(hidden_size, num_classes)
def forward(self, x):
h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)
out, _ = self.gru(x, h0)
out = out[:, -1, :]
out = self.fc(out)
return out
# Initialize the model
gru_model = ____
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(gru_model.parameters(), lr=0.01)
# Train the model and backpropagate the loss after initialization
for epoch in range(15):
optimizer.zero_grad()
outputs = ____
loss = criterion(____, y_train_seq)
____
optimizer.step()
print(f'Epoch: {epoch+1}, Loss: {loss.item()}')