ComenzarEmpieza gratis

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

Ver curso

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'])
Editar y ejecutar código