CommencezCommencez gratuitement

Définir le modèle avec des plongements de mots

Vous allez définir un modèle Keras qui :

  • utilise des couches Embedding;
  • sera entraîné avec Teacher Forcing.

Ce modèle comportera deux couches d'intégration (embedding) : une pour l'encodeur et une pour le décodeur. De plus, comme le modèle est entraîné avec Teacher Forcing, la couche Input du décodeur utilisera une longueur de séquence de fr_len-1.

Pour cet exercice, tous les éléments requis de keras.layers ainsi que Model sont déjà importés. Les variables en_len (longueur de séquence en anglais), fr_len (longueur de séquence en français), en_vocab (taille du vocabulaire anglais), fr_vocab (taille du vocabulaire français) et hsize (taille de l'état caché) ont aussi été définies.

Cette activité fait partie du cours

Traduction automatique avec Keras

Voir le cours

Instructions de l’exercice

  • Définissez une couche Input qui accepte une séquence d'ID de mots.
  • Définissez une couche Embedding qui intègre en_vocab mots, a une dimension de 96 et peut accepter une séquence d'ID (la longueur de séquence est indiquée avec l'argument input_length).
  • Définissez une couche Embedding qui intègre fr_vocab mots, a une dimension de 96 et peut accepter une séquence de fr_len-1 ID.
  • Définissez un modèle qui prend une entrée de l'encodeur et une entrée du décodeur (dans cet ordre) et produit les prédictions de mots.

Exercice interactif pratique

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

# Define an input layer which accepts a sequence of word IDs
en_inputs = Input(____=(____,))
# Define an Embedding layer which accepts en_inputs
en_emb = ____(____, ____, input_length=____)(en_inputs)
en_out, en_state = GRU(hsize, return_state=True)(en_emb)

de_inputs = Input(shape=(fr_len-1,))
# Define an Embedding layer which accepts de_inputs
de_emb = Embedding(____, 96, input_length=____)(____)
de_out, _ = GRU(hsize, return_sequences=True, return_state=True)(de_emb, initial_state=en_state)
de_pred = TimeDistributed(Dense(fr_vocab, activation='softmax'))(de_out)

# Define the Model which accepts encoder/decoder inputs and outputs predictions 
nmt_emb = Model([____, ____], ____)
nmt_emb.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
Modifier et exécuter le code