Inizia subitoInizia gratis

Definire il decoder del modello di inferenza

Il modello di inferenza è il modello che verrà usato “sul campo” per eseguire le traduzioni quando richiesto dall’utente. In questo esercizio, dovrai implementare il decoder del modello di inferenza.

Il decoder del modello di inferenza è diverso dal decoder del modello di training. Non possiamo alimentare il decoder con parole francesi perché sono proprio ciò che vogliamo prevedere. Per fortuna c’è una soluzione: possiamo usare la parola francese prevista al passo temporale precedente per alimentare il decoder del modello di inferenza. Quindi, quando vuoi generare una traduzione, il decoder deve generare una parola alla volta, usando come input l’output precedente.

Per questo esercizio, le variabili hsize (dimensione nascosta del livello GRU), fr_len e fr_vocab sono già state importate. Ricorda che il prefisso de è usato per riferirsi al decoder.

Questo esercizio fa parte del corso

Traduzione automatica con Keras

Visualizza corso

Istruzioni dell'esercizio

  • Definisci un livello Input che accetti un batch di sequenze di parole francesi one-hot encoded (lunghezza della sequenza 1).
  • Definisci un altro livello Input che accetti un batch di stato di dimensione hsize, che userai per passare al decoder lo stato precedente.
  • Ottieni l’output e lo stato della GRU del decoder.
  • Definisci un modello che accetti l’Input delle parole francesi e l’Input dello stato precedente e che produca come output la previsione finale e il nuovo stato della GRU.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

import tensorflow.keras.layers as layers
from tensorflow.keras.models import Model
# Define an input layer that accepts a single onehot encoded word
de_inputs = layers.____(shape=(____, ____))
# Define an input to accept the t-1 state
de_state_in = layers.____(shape=(____,))
de_gru = layers.GRU(hsize, return_state=True)
# Get the output and state from the GRU layer
de_out, de_state_out = ____(de_inputs, initial_state=____)
de_dense = layers.Dense(fr_vocab, activation='softmax')
de_pred = de_dense(de_out)

# Define a model
decoder = Model(inputs=[____, ____], outputs=[____, ____])
print(decoder.summary())
Modifica ed esegui il codice