ПочатиПочніть безкоштовно

Попередня обробка даних

Тепер вам потрібно обробити дані для нашої нової моделі, яка має два входи та один вихід. Два входи — це one-hot кодування англійських слів і one-hot кодування французьких слів без останнього слова.

Виходом будуть one-hot кодування французьких слів без першого слова. Тобто в декодері кожному вхідному французькому слову відповідає вихід — наступне слово. Тут ви навчитеся, як це реалізувати.

Вам надано функцію sents2seqs(), а також en_text і fr_text.

Ця вправа є частиною курсу

Machine Translation з Keras

Переглянути курс

Інструкції до вправи

  • Отримайте пакет вхідних даних енкодера (від i до i+bsize) за допомогою функції sents2seqs() (у one-hot кодуванні та в зворотному порядку).
  • Отримайте пакет вхідних даних і виходів декодера (від i до i+bsize) за допомогою функції sents2seqs() (у one-hot кодуванні).
  • Відокремте вхідні дані декодера (усі французькі слова, крім останнього) від 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))
Редагувати та запускати код