Preprocesamiento de datos
Ahora debes procesar los datos para nuestro nuevo modelo, que tiene dos entradas y una sola salida. Las dos entradas son las palabras en inglés codificadas con codificación one-hot y las palabras en francés codificadas con codificación one-hot, excluyendo la última palabra.
El resultado sería las palabras francesas codificadas en one-hot, excluyendo la primera palabra. En otras palabras, en el decodificador, cada palabra francesa introducida tiene una salida, que es la palabra siguiente. Aquí aprenderás cómo implementarlo.
Se te ha proporcionado la función « sents2seqs()
», en_text
y fr_text
.
Este ejercicio forma parte del curso
Traducción automática con Keras
Instrucciones del ejercicio
- Obtener un lote de entradas del codificador (de
i
ai+bsize
) utilizando la funciónsents2seqs()
(codificadas como onehot e invertidas). - Obtenga un lote de entradas y salidas del decodificador (de
i
ai+bsize
) utilizando la funciónsents2seqs()
(codificación onehot). - Separa las entradas del decodificador (todas las palabras francesas excepto la última) de
de_xy
dividiendo en la dimensión temporal. - Separa las salidas del decodificador (todas las palabras en francés excepto la primera) de
de_xy
.
Ejercicio interactivo práctico
Prueba este ejercicio completando el código de muestra.
bsize = 250
for i in range(0, len(en_text), bsize):
# Get the encoder inputs using the sents2seqs() function
en_x = ____('source', ____[____:____], onehot=True, reverse=____)
# Get the decoder inputs/outputs using the sents2seqs() function
de_xy = sents2seqs('target', ____[____:____], onehot=True)
# Separate the decoder inputs from de_xy
de_x = de_xy[:,____,:]
# Separate the decoder outputs from de_xy
de_y = de_xy[:,____,:]
print("Data from ", i, " to ", i+bsize)
print("\tnp.argmax() => en_x[0]: ", np.argmax(en_x[0], axis=-1))
print("\tnp.argmax() => de_x[0]: ", np.argmax(de_x[0], axis=-1))
print("\tnp.argmax() => de_y[0]: ", np.argmax(de_y[0], axis=-1))