Inizia subitoInizia gratis

Addestrare il modello con validazione

Qui addestrerai il modello usando Teacher Forcing ed eseguirai anche uno step di validazione. Addestrerai il modello per più epoche e più iterazioni. Poi, alla fine di ogni epoca, eseguirai lo step di validazione e otterrai i risultati.

Per questo, ti sono stati forniti en_text (frasi in inglese), fr_text (frasi in francese), la funzione sents2seqs() e nmt_tf (il modello compilato). Hai anche già caricati tr_en e tr_fr (dati di addestramento) e v_en e v_fr (dati di validazione).

Questo esercizio fa parte del corso

Traduzione automatica con Keras

Visualizza corso

Istruzioni dell'esercizio

  • Estrai gli input del decoder (tutte le parole tranne l'ultima) e gli output (tutte le parole tranne la prima) da de_xy.
  • Addestra il modello su un singolo batch di dati.
  • Crea gli input e gli output del decoder dai dati di validazione come hai fatto per i dati di addestramento.
  • Valuta il modello sul dataset di validazione per ottenere la validation loss e l'accuracy.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

for ei in range(n_epochs):
  for i in range(0,train_size,bsize):    
    en_x = sents2seqs('source', tr_en[i:i+bsize], onehot=True, reverse=True)
    de_xy = sents2seqs('target', tr_fr[i:i+bsize], onehot=True)
    # Create a single batch of decoder inputs and outputs
    de_x, de_y = ____[:,____,:], de_xy[:,____,:]
    # Train the model on a single batch of data
    nmt_tf.____([____,____], de_y)      
  v_en_x = sents2seqs('source', v_en, onehot=True, reverse=True)
  # Create a single batch of validation decoder inputs and outputs
  v_de_xy = ____('target', ____, onehot=____)
  v_de_x, v_de_y = ____[____], v_de_xy[____]
  # Evaluate the trained model on the validation data
  res = nmt_tf.evaluate([____,____], ____, batch_size=valid_size, verbose=0)
  print("{} => Loss:{}, Val Acc: {}".format(ei+1,res[0], res[1]*100.0))
Modifica ed esegui il codice