Začněte nyníZačněte zdarma

Předzpracování dat

Teď je potřeba zpracovat data pro náš nový model, který má dva vstupy a jeden výstup. Těmito dvěma vstupy jsou anglická slova zakódovaná metodou one-hot a francouzská slova zakódovaná metodou one-hot bez posledního slova.

Výstupem budou francouzská slova zakódovaná metodou one-hot bez prvního slova. Jinými slovy, v dekodéru má každé vstupní francouzské slovo jako výstup slovo následující. Tady se naučíš, jak to implementovat.

Máš k dispozici funkci sents2seqs(), proměnné en_text a fr_text.

Toto cvičení je součástí kurzu

Machine Translation with Keras

Zobrazit kurz

Pokyny k cvičení

  • Získej dávku vstupů enkodéru (od i do i+bsize) pomocí funkce sents2seqs() (zakódované metodou one-hot a obrácené).
  • Získej dávku vstupů a výstupů dekodéru (od i do i+bsize) pomocí funkce sents2seqs() (zakódované metodou one-hot).
  • Odděl vstupy dekodéru (všechna francouzská slova kromě posledního) z de_xy pomocí řezu na časové dimenzi.
  • Odděl výstupy dekodéru (všechna francouzská slova kromě prvního) z de_xy.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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))
Upravit a spustit kód