CommencerCommencer gratuitement

Prétraitement des données

Vous devez maintenant traiter les données pour notre nouveau modèle qui comporte deux entrées et une seule sortie. Les deux entrées sont les mots anglais codés en one-hot et les mots français codés en one-hot, à l'exception du dernier mot.

Le résultat serait les mots français encodés en one-hot, à l'exception du premier mot. En d'autres termes, dans le décodeur, chaque mot français en entrée a une sortie, qui est le mot suivant. Vous apprendrez ici comment mettre cela en œuvre.

Vous avez reçu la fonction sents2seqs(), en_text et fr_text.

Cet exercice fait partie du cours

Traduction automatique avec Keras

Afficher le cours

Instructions

  • Obtenez un lot d'entrées d'encodeur (à partir de i vers i+bsize) à l'aide de la fonction sents2seqs() (encodées en onehot et inversées).
  • Obtenez un lot d'entrées et de sorties du décodeur (à partir de i vers i+bsize) à l'aide de la fonction sents2seqs() (encodage onehot).
  • Séparez les entrées du décodeur (tous les mots français sauf le dernier) de l'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 cet exemple de code.

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