Inizia subitoInizia gratis

Addestrare il modello

In questo esercizio allenerai il modello implementato in precedenza. Sapevi che il modello di traduzione automatica di Google basato su encoder-decoder ha impiegato 2-4 giorni per essere addestrato?

Per questo esercizio userai un piccolo insieme di dati di 1500 frasi (cioè en_text e fr_text) per addestrare il modello. Questa quantità non sarà sufficiente per ottenere buone prestazioni, ma il metodo resta lo stesso. Si tratta di addestrare su più dati per più tempo. Ti sono stati forniti anche il modello nmt e la funzione sents2seqs() che hai implementato in precedenza. In questo esercizio invertirai il testo dell'encoder per ottenere prestazioni migliori. Qui, en_x indica l'input dell'encoder, mentre de_x indica l'input del decoder.

Questo esercizio fa parte del corso

Traduzione automatica con Keras

Visualizza corso

Istruzioni dell'esercizio

  • Ottieni un singolo batch di input per l'encoder (frasi inglesi dall'indice i a i+bsize) usando la funzione sents2seqs(). Gli input devono essere invertiti e one-hot encoded.
  • Ottieni un singolo batch di output per il decoder (frasi francesi dall'indice i a i+bsize) usando la funzione sents2seqs(). Gli input devono essere one-hot encoded.
  • Addestra il modello su un singolo batch di dati contenente en_x e de_y.
  • Ottieni le metriche di valutazione per en_x e de_y valutando il modello con un batch_size pari a bsize.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

n_epochs, bsize = 3, 250

for ei in range(n_epochs):
  for i in range(0,data_size,bsize):
    # Get a single batch of encoder inputs
    en_x = ____('source', ____, onehot=____, reverse=____)
    # Get a single batch of decoder outputs
    de_y = sents2seqs('target', fr_text[____], onehot=____)
    
    # Train the model on a single batch of data
    nmt.____(____, ____)    
    # Obtain the eval metrics for the training data
    res = nmt.____(____, de_y, batch_size=____, verbose=0)
    print("{} => Train Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))  
Modifica ed esegui il codice