Définir le décodeur

Traduction automatique avec Keras

Thushan Ganegedara

Data Scientist and Author

Modèle encodeur–décodeur

  • L'encodeur traite les mots anglais un par un
  • Produit finalement le vecteur de contexte
  • Le décodeur prend ce vecteur comme état initial
  • Le décodeur génère les mots français un par un

Modèle encodeur-décodeur

Traduction automatique avec Keras

Entrées du décodeur

  • Le décodeur est implémenté avec une couche GRU Keras
  • Le modèle GRU requiert deux entrées
    • Une entrée séquentielle (???)
    • Un état caché

Modèle encodeur-décodeur

Traduction automatique avec Keras

Entrées du décodeur

Répéter N fois le vecteur de contexte de l'encodeur

  • Pour produire une phrase française de 10 mots, répétez le vecteur 10 fois.

Répétition du vecteur de contexte

Traduction automatique avec Keras

Comprendre la couche RepeatVector

Couche RepeatVector :

  • Prend un argument qui fixe la longueur de séquence de la sortie voulue
  • Reçoit une entrée de forme (batch_size, taille d'entrée) (ex. entrée 2 x 3)
  • Produit une sortie de forme (batch_size, longueur de séquence, taille d'entrée) (ex. sortie 2 x 5 x 3)

Fonctionnement de RepeatVector

Traduction automatique avec Keras

Définir une couche RepeatVector

from tensorflow.keras.layers import RepeatVector
rep = RepeatVector(5)
r_inp = Input(shape=(3,))
r_out = rep(r_inp)
repeat_model = Model(inputs=r_inp, outputs=r_out)
  • Remarquez que les deux formes suivantes sont équivalentes
rep = RepeatVector(5)
r_out = rep(r_inp)
r_out = RepeatVector(5)(r_inp)
Traduction automatique avec Keras

Prédire avec le modèle

Prédire avec le modèle

x = np.array([[0,1,2],[3,4,5]])
y = repeat_model.predict(x)
print('x.shape = ',x.shape,'\ny.shape = ',y.shape)
x.shape =  (2, 3) 
y.shape =  (2, 5, 3)
Traduction automatique avec Keras

Implémenter le décodeur

Définir le décodeur

de_inputs = RepeatVector(fr_len)(en_state)
decoder_gru = GRU(hsize, return_sequences=True)

Fixer l'état initial du décodeur

gru_outputs = decoder_gru(de_inputs, initial_state=en_state)
Traduction automatique avec Keras

Définir le modèle

enc_dec = Model(inputs=en_inputs, outputs=gru_outputs)
Traduction automatique avec Keras

Passons à la pratique !

Traduction automatique avec Keras

Preparing Video For Download...