НачатьНачать бесплатно

Предобработка данных

Теперь необходимо подготовить данные для новой модели, которая принимает два входных потока и формирует один выходной. Первый вход — это английские слова в унитарном (one-hot) кодировании, второй — французские слова в унитарном кодировании без последнего слова.

Выходные данные — французские слова в унитарном кодировании без первого слова. Иными словами, в декодировщике каждому входному французскому слову соответствует выходное — следующее слово в последовательности. В этом упражнении вы научитесь реализовывать такую схему.

Вам предоставлены функция sents2seqs(), а также переменные en_text и fr_text.

Это упражнение является частью курса

Машинный перевод с Keras

Посмотреть курс

Инструкции к упражнению

  • Получите батч входных данных кодировщика (с i по i+bsize) с помощью функции sents2seqs() (в унитарном кодировании и в обратном порядке).
  • Получите батч входных и выходных данных декодировщика (с i по i+bsize) с помощью функции sents2seqs() (в унитарном кодировании).
  • Выделите входные данные декодировщика (все французские слова, кроме последнего) из de_xy, выполнив срез по временному измерению.
  • Выделите выходные данные декодировщика (все французские слова, кроме первого) из de_xy.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

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))
Редактировать и запускать код