Kom igångKom igång gratis

Förbearbeta data

Nu behöver du förbearbeta data för vår nya modell, som har två indata och ett enda resultat. De två indatan är one-hot-kodade engelska ord och one-hot-kodade franska ord exklusive det sista ordet.

Resultatet är de one-hot-kodade franska orden exklusive det första ordet. Med andra ord har varje franskt indataord i decodern ett resultat, nämligen nästa ord. Här lär du dig hur det implementeras.

Du har tillgång till funktionen sents2seqs(), samt en_text och fr_text.

Den här övningen är en del av kursen

Maskinöversättning med Keras

Visa kurs

Övningsinstruktioner

  • Hämta en batch med encoderindata (från i till i+bsize) med funktionen sents2seqs() (one-hot-kodad och omvänd).
  • Hämta en batch med decoderindata och decoderresultat (från i till i+bsize) med funktionen sents2seqs() (one-hot-kodad).
  • Separera decoderindata (alla franska ord utom det sista) från de_xy genom att skära längs tidsdimensionen.
  • Separera decoderresultaten (alla franska ord utom det första) från de_xy.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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))
Redigera och kör kod