CommencezCommencez gratuitement

Entraîner le modèle avec validation

Ici, vous allez entraîner le modèle en utilisant Teacher Forcing et effectuer aussi une étape de validation. Vous entraînerez le modèle sur plusieurs époques et plusieurs itérations. Puis, à la fin de chaque époque, vous exécuterez l'étape de validation et obtiendrez les résultats.

Pour cela, on vous fournit en_text (phrases en anglais), fr_text (phrases en français), la fonction sents2seqs() et nmt_tf (le modèle compilé). Vous avez aussi tr_en et tr_fr (données d'entraînement) ainsi que v_en et v_fr (données de validation) déjà chargées.

Cette activité fait partie du cours

Traduction automatique avec Keras

Voir le cours

Instructions de l’exercice

  • Extraire les entrées du décodeur (tous les mots sauf le dernier) et les sorties (tous les mots sauf le premier) à partir de de_xy.
  • Entraîner le modèle sur un seul lot (batch) de données.
  • Créer les entrées et sorties du décodeur à partir des données de validation, comme vous l'avez fait pour les données d'entraînement.
  • Évaluer le modèle sur l'ensemble de validation pour obtenir la perte de validation et la précision.

Exercice interactif pratique

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

for ei in range(n_epochs):
  for i in range(0,train_size,bsize):    
    en_x = sents2seqs('source', tr_en[i:i+bsize], onehot=True, reverse=True)
    de_xy = sents2seqs('target', tr_fr[i:i+bsize], onehot=True)
    # Create a single batch of decoder inputs and outputs
    de_x, de_y = ____[:,____,:], de_xy[:,____,:]
    # Train the model on a single batch of data
    nmt_tf.____([____,____], de_y)      
  v_en_x = sents2seqs('source', v_en, onehot=True, reverse=True)
  # Create a single batch of validation decoder inputs and outputs
  v_de_xy = ____('target', ____, onehot=____)
  v_de_x, v_de_y = ____[____], v_de_xy[____]
  # Evaluate the trained model on the validation data
  res = nmt_tf.evaluate([____,____], ____, batch_size=valid_size, verbose=0)
  print("{} => Loss:{}, Val Acc: {}".format(ei+1,res[0], res[1]*100.0))
Modifier et exécuter le code