CommencerCommencer gratuitement

Entraînement du modèle

Vous allez entraîner le modèle précédemment implémenté dans cet exercice. Saviez-vous que le modèle de traduction automatique basé sur un encodeur-décodeur de Google a nécessité 2 à 4 jours de formation ?

Pour cet exercice, vous utiliserez un petit ensemble de données de 1 500 phrases ( en_text et fr_text) pour entraîner le modèle. Ce montant sera à peine suffisant pour obtenir de bonnes performances, mais la méthode restera la même. Il s'agit de se former sur davantage de données pendant plus longtemps. Vous avez également reçu le modèle nmt et la fonction sents2seqs() que vous avez implémentés précédemment. Vous allez inverser le texte de l'encodeur afin d'obtenir de meilleures performances dans cet exercice. Ici, « en_x » fait référence à l'entrée de l'encodeur, tandis que « de_x » fait référence à l'entrée du décodeur.

Cet exercice fait partie du cours

Traduction automatique avec Keras

Afficher le cours

Instructions

  • Obtenez un seul lot d'entrées d'encodeur (phrases en anglais de l'index i à i+bsize) à l'aide de la fonction sents2seqs(). Les entrées doivent être inversées et encodées en mode onehot.
  • Obtenir un seul lot de résultats du décodeur (phrases en français de l'index i à i+bsize) à l'aide de la fonction sents2seqs(). Les entrées doivent être encodées en mode onehot.
  • Entraînez le modèle sur un seul lot de données contenant des données d'en_x et d'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 cet exemple de code.

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