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
Istruzioni dell'esercizio
- Importa il sottomodulo
layersdatensorflow.keras. - Ottieni l'output e lo stato dell'encoder e assegnali rispettivamente a
en_outeen_state. - Definisci un livello
Inputper il decoder che accetti una sequenza lungafr_len-1di parole francesi one-hot encoded. - Definisci un livello
TimeDistributedDensecon softmax confr_vocabnodi.
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)