Pré-processando os dados
Agora você precisa processar os dados para nosso novo modelo, que tem duas entradas e uma única saída. As duas entradas são: as palavras em inglês one-hot encoded e as palavras em francês one-hot encoded, excluindo a última palavra.
A saída será as palavras em francês one-hot encoded, excluindo a primeira palavra. Em outras palavras, no decodificador, cada palavra de entrada em francês tem como saída a próxima palavra. Aqui você vai aprender como implementar isso.
Foram fornecidos a você a função sents2seqs(), en_text e fr_text.
Este exercício faz parte do curso
Machine Translation with Keras
Instruções do exercício
- Obtenha um lote de entradas do codificador (de
iatéi+bsize) usando a funçãosents2seqs()(one-hot encoded e invertidas). - Obtenha um lote de entradas e saídas do decodificador (de
iatéi+bsize) usando a funçãosents2seqs()(one-hot encoded). - Separe as entradas do decodificador (todas as palavras em francês, exceto a última) de
de_xyfazendo slicing na dimensão de 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))