CommencerCommencer gratuitement

Entraînement du modèle avec validation

Ici, vous allez entraîner le modèle à l'aide du Teacher Forcing et effectuer une étape de validation. Vous allez entraîner le modèle pendant plusieurs époques et plusieurs itérations. À la fin de chaque époque, vous exécuterez l'étape de validation et obtiendrez les résultats.

Pour ce faire, vous disposez de en_text (phrases en anglais), fr_text (phrases en français), de la fonction « sents2seqs() » et de nmt_tf (le modèle compilé). Vous disposez également des fichiers tr_en et tr_fr (données d'entraînement) ainsi que v_en et v_fr (données de validation) déjà chargés.

Cet exercice fait partie du cours

Traduction automatique avec Keras

Afficher le cours

Instructions

  • Extrayez les entrées du décodeur (tous les mots sauf le dernier) et les sorties (tous les mots sauf le premier) de de_xy.
  • Entraînez le modèle sur un seul lot de données.
  • Créez des entrées et des sorties de décodeur à partir des données de validation, de la même manière que vous l'avez fait pour les données d'apprentissage.
  • Évaluez le modèle sur l'ensemble de données de validation afin d'obtenir la perte de validation et la précision.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

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