CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Obtenez un lot d'entrées d'encodeur (de i à i+bsize) à l'aide de la fonction sents2seqs() (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 fonction sents2seqs() (codage one-hot).
  • Séparez les entrées du décodeur (tous les mots français sauf le dernier) de de_xy en 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))
Modifier et exécuter le code