Définir le décodeur

Traduction automatique avec Keras

Thushan Ganegedara

Data Scientist and Author

Modèle encodeur-décodeur

  • L'encodeur lit les mots anglais un à 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 à un

Modèle encodeur-décodeur

Traduction automatique avec Keras

Entrée du décodeur

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

Modèle encodeur-décodeur

Traduction automatique avec Keras

Entrée du décodeur

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

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

Répétition du vecteur de contexte du modèle encodeur-décodeur

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 (taille_lot, taille_entrée) (p. ex. entrée de taille 2 x 3)
  • Produit une sortie de forme (taille_lot, longueur_séquence, taille_entrée) (p. ex. sortie de taille 2 x 3 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)
  • Notez 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...