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
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))