Inizia subitoInizia gratis

Pre-elaborazione dei dati

Ora devi elaborare i dati per il nostro nuovo modello, che ha due input e un singolo output. I due input sono: le parole inglesi one-hot encoded e le parole francesi one-hot encoded escluse le ultime parole.

L'output sarà costituito dalle parole francesi one-hot encoded escluse le prime parole. In altre parole, nel decoder, a ogni parola francese in input corrisponde come output la parola successiva. Qui imparerai come implementarlo.

Hai a disposizione la funzione sents2seqs(), en_text e fr_text.

Questo esercizio fa parte del corso

Traduzione automatica con Keras

Visualizza corso

Istruzioni dell'esercizio

  • Ottieni un batch di input dell'encoder (da i a i+bsize) usando la funzione sents2seqs() (one-hot encoded e reversed).
  • Ottieni un batch di input e output del decoder (da i a i+bsize) usando la funzione sents2seqs() (one-hot encoded).
  • Separa gli input del decoder (tutte le parole francesi tranne l'ultima) da de_xy facendo slicing sulla dimensione temporale.
  • Separa gli output del decoder (tutte le parole francesi tranne la prima) da de_xy.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

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))
Modifica ed esegui il codice