Definición del modelo de integración
Definirás un modelo Keras que:
- Usa capas de e
Embedding
. - Se entrenará con Teacher Forcing.
Este modelo tendrá dos capas de incrustación: una capa de incrustación del codificador y una capa de incrustación del decodificador. Además, dado que el modelo se entrena utilizando Teacher Forcing, utilizará una longitud de secuencia de fr_len-1
en la capa decodificadora Input
.
Para este ejercicio, ya tienes importados todos los archivos necesarios: keras.layers
y Model
. Además, se han definido las variables « en_len
» (longitud de la secuencia en inglés), « fr_len
» (longitud de la secuencia en francés), « en_vocab
» (tamaño del vocabulario en inglés), « fr_vocab
» (tamaño del vocabulario en francés) y « hsize
» (tamaño oculto).
Este ejercicio forma parte del curso
Traducción automática con Keras
Instrucciones del ejercicio
- Define una capa de entrada (
Input
) que acepte una secuencia de identificadores de palabras. - Define una capa de tipo «
Embedding
» que incrusta palabras de tipo «en_vocab
», tiene una longitud de 96 y puede aceptar una secuencia de ID (la longitud de la secuencia se especifica mediante el argumento «input_length
»). - Define una capa «
Embedding
» que incruste palabras «fr_vocab
», tenga una longitud de 96 y pueda aceptar una secuencia de identificadores «fr_len-1
». - Define un modelo que tome una entrada del codificador y una entrada del decodificador (en ese orden) y genere las predicciones de palabras.
Ejercicio interactivo práctico
Prueba este ejercicio completando el código de muestra.
# 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'])