Formation du modèle basé sur l'intégration de mots
Vous apprendrez ici comment mettre en œuvre le processus d'entraînement d'un modèle de traduction automatique qui utilise des plongements de mots. Un mot est représenté par un seul nombre au lieu d'un vecteur codé en one-hot comme vous l'avez fait dans les exercices précédents. Vous allez entraîner le modèle pendant plusieurs époques tout en parcourant l'ensemble des données par lots.
Pour cet exercice, vous disposez de données d'entraînement (tr_en
et tr_fr
) sous la forme d'une liste de phrases. Vous n'utiliserez qu'un très petit échantillon (1 000 phrases) des données réelles, car sinon l'entraînement pourrait prendre beaucoup de temps. Vous disposez également de la fonction d'sents2seqs()
et du modèle nmt_emb
que vous avez implémentés dans l'exercice précédent. Veuillez noter que nous utilisons en_x
pour désigner les entrées de l'encodeur et de_x
pour désigner les entrées du décodeur.

Cet exercice fait partie du cours
Traduction automatique avec Keras
Instructions
- Obtenez un seul lot de phrases en français sans encodage onehot à l'aide de la fonction
sents2seqs()
. - Veuillez extraire tous les mots sauf le dernier de l'adresse suivante :
de_xy
. - Obtenez tous les mots sauf le premier à partir de
de_xy_oh
(mots français avec encodage onehot). - Entraînez le modèle à l'aide d'un seul lot de données.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
for ei in range(3):
for i in range(0, train_size, bsize):
en_x = sents2seqs('source', tr_en[i:i+bsize], onehot=False, reverse=True)
# Get a single batch of French sentences with no onehot encoding
de_xy = ____('target', ____[i:i+bsize], ____=____)
# Get all words except the last word in that batch
de_x = de_xy[:,____]
de_xy_oh = sents2seqs('target', tr_fr[i:i+bsize], onehot=True)
# Get all words except the first from de_xy_oh
de_y = de_xy_oh[____,____,____]
# Training the model on a single batch of data
nmt_emb.train_on_batch([____,____], ____)
res = nmt_emb.evaluate([en_x, de_x], de_y, batch_size=bsize, verbose=0)
print("{} => Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))