Definición de las capas del modelo Teacher Forcing
Definirás una versión nueva y mejorada del modelo de traducción automática que definiste anteriormente. ¿Sabías que modelos como el traductor automático de Google utilizaron esta técnica de «forzamiento del profesor» para entrenar su modelo?
Como ya has visto, tu modelo anterior debe modificarse ligeramente para adoptar el método Teacher Forcing. En este ejercicio, realizarás los cambios necesarios en el modelo anterior. Se te han proporcionado los parámetros de idioma en_len
y fr_len
(longitud de las frases en inglés/francés con relleno), en_vocab
y fr_vocab
(tamaño del vocabulario de los conjuntos de datos en inglés/francés) y hsize
(tamaño de la capa oculta de las capas GRU). Recuerda que el decodificador aceptará una secuencia francesa con un elemento menos que fr_len
. Recuerda que utilizamos el prefijo « en
» para referirnos a cuestiones relacionadas con el codificador y « de
» para cuestiones relacionadas con el decodificador.
Este ejercicio forma parte del curso
Traducción automática con Keras
Instrucciones del ejercicio
- Importa el submódulo
layers
desdetensorflow.keras
. - Obtener los valores de salida y estado del codificador y asignarlos a
en_out
yen_state
respectivamente. - Define una capa de decodificador «
Input
» que acepte una secuencia larga de palabras francesas codificadas como «onehot» con un tamaño de «fr_len-1
». - Define una capa softmax de
TimeDistributed
Dense
confr_vocab
nodos.
Ejercicio interactivo práctico
Prueba este ejercicio completando el código de muestra.
# Import the layers submodule from keras
import ____.____.____ as layers
en_inputs = layers.Input(shape=(en_len, en_vocab))
en_gru = layers.GRU(hsize, return_state=True)
# Get the encoder output and state
____, ____ = en_gru(____)
# Define the decoder input layer
de_inputs = layers.____(shape=(____, ____))
de_gru = layers.GRU(hsize, return_sequences=True)
de_out = de_gru(de_inputs, initial_state=en_state)
# Define a TimeDistributed Dense softmax layer with fr_vocab nodes
de_dense = layers.____(____.____(____, activation=____))
de_pred = de_dense(de_out)