Génération de texte avec RNN - Entraînement et génération
L’équipe de PyBooks souhaite maintenant que vous entraîniez et testiez le modèle RNN, conçu pour prédire le caractère suivant dans une séquence à partir de l’entrée fournie, afin d’autocompléter des titres de livres. Ce projet aidera l’équipe à développer davantage des modèles de complétion de texte.
L’instance model de la classe RNNmodel est préchargée pour vous. La variable data a été prétraitée et encodée en séquence.
Les variables inputs et targets sont préchargées pour vous.
Cet exercice fait partie du cours
Deep Learning pour le texte avec PyTorch
Instructions
- Instanciez la fonction de perte qui sera utilisée pour calculer l’erreur de notre modèle.
- Instanciez l’optimiseur depuis le module d’optimisation de PyTorch.
- Lancez l’entraînement du modèle en le passant en mode train et en réinitialisant les gradients avant d’effectuer une étape d’optimisation.
- Après l’entraînement, passez le modèle en mode évaluation pour le tester sur un exemple d’entrée.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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]}'")