Prétraitement des données
Vous devez maintenant traiter les données pour notre nouveau modèle, qui a deux entrées et une seule sortie. Les deux entrées sont les mots anglais et les mots français en codage one-hot, en excluant le dernier mot pour le français.
La sortie correspondra aux mots français en codage one-hot, en excluant le premier mot. Autrement dit, dans le décodeur, chaque mot d'entrée en français a pour sortie le mot suivant. Vous allez voir comment l'implanter.
On vous a fourni la fonction sents2seqs(), ainsi que en_text et fr_text.
Cette activité fait partie du cours
Traduction automatique avec Keras
Instructions de l’exercice
- Obtenez un lot d'entrées d'encodeur (de
iài+bsize) à l'aide de la fonctionsents2seqs()(codage one-hot et ordre inversé). - Obtenez un lot d'entrées et de sorties du décodeur (de
iài+bsize) à l'aide de la fonctionsents2seqs()(codage one-hot). - Séparez les entrées du décodeur (tous les mots français sauf le dernier) de
de_xyen découpant sur la dimension temporelle. - Séparez les sorties du décodeur (tous les mots français sauf le premier) de
de_xy.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
bsize = 250
for i in range(0, len(en_text), bsize):
# Get the encoder inputs using the sents2seqs() function
en_x = ____('source', ____[____:____], onehot=True, reverse=____)
# Get the decoder inputs/outputs using the sents2seqs() function
de_xy = sents2seqs('target', ____[____:____], onehot=True)
# Separate the decoder inputs from de_xy
de_x = de_xy[:,____,:]
# Separate the decoder outputs from de_xy
de_y = de_xy[:,____,:]
print("Data from ", i, " to ", i+bsize)
print("\tnp.argmax() => en_x[0]: ", np.argmax(en_x[0], axis=-1))
print("\tnp.argmax() => de_x[0]: ", np.argmax(de_x[0], axis=-1))
print("\tnp.argmax() => de_y[0]: ", np.argmax(de_y[0], axis=-1))