Pré-processamento de dados
Agora você precisa processar os dados para o nosso novo modelo, que tem duas entradas e uma única saída. As duas entradas são as palavras em inglês codificadas em one-hot e as palavras em francês codificadas em one-hot, sem a última palavra.
O resultado seria as palavras em francês codificadas em one-hot, sem a primeira palavra. Em outras palavras, no decodificador, cada palavra francesa que entra tem uma saída, que é a próxima palavra. Aqui você vai aprender como fazer isso.
Você tem acesso à função “ sents2seqs()
”, en_text
e fr_text
.
Este exercício faz parte do curso
Tradução automática com Keras
Instruções do exercício
- Pega um monte de entradas do codificador (de
i
parai+bsize
) usando a funçãosents2seqs()
(codificadas como onehot e invertidas). - Pega um monte de entradas e saídas do decodificador (de
i
parai+bsize
) usando a função “sents2seqs()
” (codificação onehot). - Separe as entradas do decodificador (todas as palavras em francês, exceto a última) de “
de_xy
” cortando na dimensão do tempo. - Separe as saídas do decodificador (todas as palavras em francês, exceto a primeira) de
de_xy
.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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))