CommencezCommencez gratuitement

Entraîner le modèle

Vous allez entraîner le modèle que vous avez implémenté plus tôt dans cet exercice. Saviez-vous que le modèle de traduction automatique de Google basé sur un encodeur-décodeur a pris de 2 à 4 jours à entraîner?

Pour cet exercice, vous utiliserez un petit jeu de données de 1 500 phrases (c.-à-d. en_text et fr_text) pour entraîner le modèle. Cette quantité sera loin d'être suffisante pour obtenir de bonnes performances, mais la méthode reste la même. Il suffit d'entraîner plus longtemps sur davantage de données. On vous a également fourni le modèle nmt et la fonction sents2seqs() que vous avez déjà implémentée. Vous inverserez le texte d'entrée de l'encodeur pour obtenir de meilleurs résultats dans cet exercice. Ici, en_x fait référence à l'entrée de l'encodeur, alors que de_x fait référence à l'entrée du décodeur.

Cette activité fait partie du cours

Traduction automatique avec Keras

Voir le cours

Instructions de l’exercice

  • Obtenez un seul lot d'entrées de l'encodeur (phrases anglaises de l'indice i à i+bsize) à l'aide de la fonction sents2seqs(). Les entrées doivent être inversées et codées en one-hot.
  • Obtenez un seul lot de sorties du décodeur (phrases françaises de l'indice i à i+bsize) à l'aide de la fonction sents2seqs(). Les entrées doivent être codées en one-hot.
  • Entraînez le modèle sur un seul lot de données contenant en_x et de_y.
  • Obtenez les mesures d'évaluation pour en_x et de_y en évaluant le modèle avec un batch_size de bsize.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

n_epochs, bsize = 3, 250

for ei in range(n_epochs):
  for i in range(0,data_size,bsize):
    # Get a single batch of encoder inputs
    en_x = ____('source', ____, onehot=____, reverse=____)
    # Get a single batch of decoder outputs
    de_y = sents2seqs('target', fr_text[____], onehot=____)
    
    # Train the model on a single batch of data
    nmt.____(____, ____)    
    # Obtain the eval metrics for the training data
    res = nmt.____(____, de_y, batch_size=____, verbose=0)
    print("{} => Train Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))  
Modifier et exécuter le code