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
Instructions
- Obtenez un seul lot d'entrées d'encodeur (phrases en anglais de l'index
i
ài+bsize
) à l'aide de la fonctionsents2seqs()
. 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 fonctionsents2seqs()
. 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
etde_y
en évaluant le modèle avec unbatch_size
debsize
.
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))