CommencezCommencez gratuitement

Génération de texte avec un RNN – Entraînement et génération

L'équipe de PyBooks veut maintenant que vous entraîniez et testiez le modèle RNN, conçu pour prédire le prochain caractère d'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 déjà chargée pour vous. La variable data a été prétraitée et encodée sous forme de séquence.

Les variables inputs et targets sont également préchargées pour vous.

Cette activité fait partie du cours

Apprentissage profond pour le texte avec PyTorch

Voir le cours

Instructions de l’exercice

  • Instanciez la fonction de perte qui servira à calculer l'erreur de notre modèle.
  • Instanciez l'optimiseur à partir du 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 ce code d’exemple.

# 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]}'")
Modifier et exécuter le code