Définition du modèle d'intégration
Vous allez définir un modèle Keras qui :
- Utilise les couches d'
Embedding
- Sera formé avec l'aide d'un enseignant
Ce modèle comportera deux couches d'intégration : une couche d'intégration d'encodeur et une couche d'intégration de décodeur. De plus, comme le modèle est entraîné à l'aide de Teacher Forcing, il utilisera une longueur de séquence de fr_len-1
dans la couche d'Input
du décodeur.
Pour cet exercice, vous avez importé toutes les informations nécessaires keras.layers
et Model
. En outre, les variables suivantes ont été définies : « en_len
» (longueur de la séquence en anglais), « fr_len
» (longueur de la séquence en français), « en_vocab
» (taille du vocabulaire anglais), « fr_vocab
» (taille du vocabulaire français) et « hsize
» (taille cachée).
Cet exercice fait partie du cours
Traduction automatique avec Keras
Instructions
- Définissez une couche d'
Input
qui accepte une séquence d'identifiants de mots. - Définissez une couche d'
Embedding
s qui intègre des mots d'en_vocab
, a une longueur de 96 et peut accepter une séquence d'identifiants (la longueur de la séquence est spécifiée à l'aide de l'argumentinput_length
). - Définissez une couche d'
Embedding
qui intègre des mots de l'fr_vocab
, a une longueur de 96 et peut accepter une séquence d'identifiants d'fr_len-1
. - Définissez un modèle qui prend en entrée une donnée provenant de l'encodeur et une donnée provenant du décodeur (dans cet ordre) et qui génère les prédictions de mots.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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'])