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
Instructions de l’exercice
- Définissez une couche
Inputqui accepte une séquence d'ID de mots. - Définissez une couche
Embeddingqui intègreen_vocabmots, a une dimension de 96 et peut accepter une séquence d'ID (la longueur de séquence est indiquée avec l'argumentinput_length). - Définissez une couche
Embeddingqui intègrefr_vocabmots, a une dimension de 96 et peut accepter une séquence defr_len-1ID. - 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'])