Inizia subitoInizia gratis

Definire il modello con embedding

Definirai un modello Keras che:

  • Usa livelli Embedding
  • Verrà addestrato con Teacher Forcing

Questo modello avrà due livelli di embedding: un embedding per l'encoder e un embedding per il decoder. Inoltre, poiché il modello è addestrato usando Teacher Forcing, userà una lunghezza di sequenza pari a fr_len-1 nel livello Input del decoder.

Per questo esercizio, hai già importato tutti i keras.layers necessari e Model. Inoltre sono state definite le variabili en_len (lunghezza della sequenza in inglese), fr_len (lunghezza della sequenza in francese), en_vocab (dimensione del vocabolario inglese), fr_vocab (dimensione del vocabolario francese) e hsize (dimensione dello stato nascosto).

Questo esercizio fa parte del corso

Traduzione automatica con Keras

Visualizza corso

Istruzioni dell'esercizio

  • Definisci un livello Input che accetti una sequenza di ID di parola.
  • Definisci un livello Embedding che incorpori en_vocab parole, abbia lunghezza 96 e possa accettare una sequenza di ID (la lunghezza della sequenza si specifica con l'argomento input_length).
  • Definisci un livello Embedding che incorpori fr_vocab parole, abbia lunghezza 96 e possa accettare una sequenza di fr_len-1 ID.
  • Definisci un modello che prenda un input dall'encoder e uno dal decoder (in quest'ordine) e produca le predizioni delle parole.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# Define an input layer which accepts a sequence of word IDs
en_inputs = Input(____=(____,))
# Define an Embedding layer which accepts en_inputs
en_emb = ____(____, ____, input_length=____)(en_inputs)
en_out, en_state = GRU(hsize, return_state=True)(en_emb)

de_inputs = Input(shape=(fr_len-1,))
# Define an Embedding layer which accepts de_inputs
de_emb = Embedding(____, 96, input_length=____)(____)
de_out, _ = GRU(hsize, return_sequences=True, return_state=True)(de_emb, initial_state=en_state)
de_pred = TimeDistributed(Dense(fr_vocab, activation='softmax'))(de_out)

# Define the Model which accepts encoder/decoder inputs and outputs predictions 
nmt_emb = Model([____, ____], ____)
nmt_emb.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
Modifica ed esegui il codice