ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Obtenha um lote de entradas do codificador (de i até i+bsize) usando a função sents2seqs() (one-hot encoded e invertidas).
  • Obtenha um lote de entradas e saídas do decodificador (de i até i+bsize) usando a função sents2seqs() (one-hot encoded).
  • Separe as entradas do decodificador (todas as palavras em francês, exceto a última) de de_xy fazendo 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))
Editar e executar o código