Generación de texto con RNN: entrenamiento y generación
El equipo de PyBooks ahora quiere que entrenes y pruebes el modelo RNN, diseñado para predecir el siguiente carácter de la secuencia a partir de la entrada, con el fin de autocompletar nombres de libros. Este proyecto ayudará al equipo a seguir desarrollando modelos para completar texto.
La instancia model de la clase RNNmodel ya está precargada. La variable data ha sido preprocesada y codificada como una secuencia.
Las variables inputs y targets están precargadas para ti.
Este ejercicio forma parte del curso
Deep Learning para texto con PyTorch
Instrucciones del ejercicio
- Instancia la función de pérdida que se usará para calcular el error de nuestro modelo.
- Instancia el optimizador desde el módulo de optimización de PyTorch.
- Ejecuta el proceso de entrenamiento del modelo poniendo el modelo en modo train y poniendo a cero los gradientes antes de realizar un paso de optimización.
- Tras el entrenamiento, cambia el modelo a modo de evaluación para probarlo con una entrada de ejemplo.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# Instantiate the loss function
criterion = nn.____()
# Instantiate the optimizer
optimizer = torch.optim.____(model.parameters(), lr=0.01)
# Train the model
for epoch in range(100):
model.____()
outputs = model(inputs)
loss = criterion(outputs, targets)
optimizer.____()
loss.backward()
optimizer.step()
if (epoch+1) % 10 == 0:
print(f'Epoch {epoch+1}/100, Loss: {loss.item()}')
# Test the model
model.____()
test_input = char_to_ix['r']
test_input = nn.functional.one_hot(torch.tensor(test_input).view(-1, 1), num_classes=len(chars)).float()
predicted_output = model(test_input)
predicted_char_ix = torch.argmax(predicted_output, 1).item()
print(f"Test Input: 'r', Predicted Output: '{ix_to_char[predicted_char_ix]}'")