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
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 fonctionsents2seqs(). 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 fonctionsents2seqs(). Les entrées doivent être codées en one-hot. - Entraînez le modèle sur un seul lot de données contenant
en_xetde_y. - Obtenez les mesures d'évaluation pour
en_xetde_yen évaluant le modèle avec unbatch_sizedebsize.
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))