Définir le décodeur du modèle d'inférence
Le modèle d'inférence est le modèle qui sera utilisé en production pour effectuer des traductions à la demande des utilisateurs. Dans cet exercice, vous devez implémenter le décodeur du modèle d'inférence.
Le décodeur du modèle d'inférence est différent de celui du modèle d'entraînement. Nous ne pouvons pas alimenter le décodeur avec des mots français, puisque c'est justement ce que nous voulons prédire. Heureusement, il existe une solution. Nous pouvons utiliser le mot français prédit à l'étape de temps précédente pour alimenter le décodeur du modèle d'inférence. Ainsi, lorsque vous générez une traduction, le décodeur doit produire un mot à la fois, tout en réutilisant la sortie précédente comme entrée.
Pour cet exercice, les variables hsize (taille cachée de la couche GRU), fr_len et fr_vocab ont été importées. Rappelez-vous que le préfixe de est utilisé pour désigner le décodeur.
Cette activité fait partie du cours
Traduction automatique avec Keras
Instructions de l’exercice
- Définissez une couche
Inputqui accepte un lot de séquences de mots français codés en onehot (séquence de longueur 1). - Définissez une autre couche
Inputqui accepte un lot d'états de taillehsize, que vous utiliserez pour fournir l'état précédent au décodeur. - Récupérez la sortie et l'état du
GRUdu décodeur. - Définissez un modèle qui accepte l'
Inputdes mots français et l'Inputde l'état précédent, et qui produit la prédiction finale ainsi que le nouvel état duGRU.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
import tensorflow.keras.layers as layers
from tensorflow.keras.models import Model
# Define an input layer that accepts a single onehot encoded word
de_inputs = layers.____(shape=(____, ____))
# Define an input to accept the t-1 state
de_state_in = layers.____(shape=(____,))
de_gru = layers.GRU(hsize, return_state=True)
# Get the output and state from the GRU layer
de_out, de_state_out = ____(de_inputs, initial_state=____)
de_dense = layers.Dense(fr_vocab, activation='softmax')
de_pred = de_dense(de_out)
# Define a model
decoder = Model(inputs=[____, ____], outputs=[____, ____])
print(decoder.summary())