Inizia subitoInizia gratis

Definire i livelli del modello con Teacher Forcing

Ora definirai una versione nuova e migliorata del modello di traduzione automatica che hai visto prima. Sapevi che modelli come Google Machine Translator hanno usato la tecnica del Teacher Forcing per addestrare il loro modello?

Come hai già visto, il modello precedente va modificato leggermente per adottare il Teacher Forcing. In questo esercizio apporterai le modifiche necessarie al modello precedente. Ti sono stati forniti i parametri linguistici en_len e fr_len (lunghezza delle frasi inglesi/francesi con padding), en_vocab e fr_vocab (dimensione del vocabolario dei dataset inglese/francese) e hsize (dimensione del livello nascosto dei livelli GRU). Ricorda che il decoder accetterà una sequenza francese con un elemento in meno rispetto a fr_len. Ricorda che usiamo il prefisso en per indicare ciò che riguarda l'encoder e de per ciò che riguarda il decoder.

Questo esercizio fa parte del corso

Traduzione automatica con Keras

Visualizza corso

Istruzioni dell'esercizio

  • Importa il sottomodulo layers da tensorflow.keras.
  • Ottieni l'output e lo stato dell'encoder e assegnali rispettivamente a en_out e en_state.
  • Definisci un livello Input per il decoder che accetti una sequenza lunga fr_len-1 di parole francesi one-hot encoded.
  • Definisci un livello TimeDistributed Dense con softmax con fr_vocab nodi.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# Import the layers submodule from keras
import ____.____.____ as layers

en_inputs = layers.Input(shape=(en_len, en_vocab))
en_gru = layers.GRU(hsize, return_state=True)
# Get the encoder output and state
____, ____ = en_gru(____)

# Define the decoder input layer
de_inputs = layers.____(shape=(____, ____))
de_gru = layers.GRU(hsize, return_sequences=True)
de_out = de_gru(de_inputs, initial_state=en_state)
# Define a TimeDistributed Dense softmax layer with fr_vocab nodes
de_dense = layers.____(____.____(____, activation=____))
de_pred = de_dense(de_out)
Modifica ed esegui il codice