CommencezCommencez gratuitement

Définir le décodeur

Dans cet exercice, vous allez implémenter le décodeur et définir un modèle de bout en bout allant des entrées de l'encodeur aux sorties du GRU du décodeur. Le décodeur reprend le même modèle que l'encodeur, mais les entrées et les états fournis au décodeur diffèrent de ceux de l'encodeur. Par exemple, le décodeur consomme le vecteur de contexte produit par l'encodeur à la fois comme entrées et comme état initial du décodeur. Rappelez-vous que nous utiliserons le préfixe en (p. ex. en_gru) pour indiquer tout ce qui concerne l'encodeur et de pour les éléments liés au décodeur (p. ex. de_gru).

Pour implémenter le décodeur, vous utiliserez les couches RepeatVector et GRU.

Pour cet exercice, on vous fournit le modèle d'encodeur et les différentes couches de l'encodeur que vous avez déjà implémentées. Par exemple, les entrées de l'encodeur sont fournies sous en_inputs et le vecteur de contexte sous en_state. Notez aussi que les objets GRU et Model ont déjà été importés.

Cette activité fait partie du cours

Traduction automatique avec Keras

Voir le cours

Instructions de l’exercice

  • Définissez une couche RepeatVector qui prend en_state en entrée et la répète fr_len fois.
  • Définissez une couche GRU, decoder_gru, qui a un nombre d'unités cachées égal à hsize et retourne l'ensemble des sorties produites.
  • Obtenez la sortie de la couche decoder_gru en fournissant de_inputs comme entrée et en_state comme état initial du décodeur.
  • Définissez un modèle qui prend en_inputs comme entrée et gru_outputs comme sortie.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

from tensorflow.keras.layers import RepeatVector

hsize = 48
fr_len = 20
# Define a RepeatVector layer
de_inputs = ____(____)(____)
# Define a GRU model that returns all outputs
decoder_gru = ____(____, ____=____)
# Get the outputs of the decoder
gru_outputs = ____(____, initial_state=____)
# Define a model with the correct inputs and outputs
enc_dec = ____(inputs=____, outputs=____)
enc_dec.summary()
Modifier et exécuter le code