Addestrare il modello con validazione
Qui imparerai ad addestrare il modello di neural machine translation con uno step di validazione.
Ti viene fornito il modello nmt che hai creato nel capitolo precedente. Inoltre, allenerai il modello su frasi in inglese e francese ottenute dal Repo Github di Udacity. Hai a disposizione il testo inglese di training (tr_en) e il testo francese (tf_fr), così come il testo inglese di validazione (v_en) e quello francese (v_fr) dall'esercizio precedente.
L'addestramento del modello richiede un po' di tempo, quindi il tuo codice impiegherà qualche istante in più per essere eseguito.
Questo esercizio fa parte del corso
Traduzione automatica con Keras
Istruzioni dell'esercizio
- Crea i dati di validazione trasformando
v_enev_frusando la funzionesents2seqs. - Ottieni un batch correttamente trasformato di input e output usando la funzione
sents2seqs. - Usa gli input (
en_x) e gli output (de_y) per addestrarenmtsu un singolo batch. - Usa
v_en_xev_de_yinsieme avalid_sizecomebatch_sizeper valutare il modellonmte ottenere l'accuratezza di validazione.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# Convert validation data to onehot
v_en_x = ____(____, ____, onehot=____, reverse=____)
v_de_y = ____(____, ____, onehot=True)
n_epochs, bsize = 3, 250
for ei in range(n_epochs):
for i in range(0,train_size,bsize):
# Get a single batch of inputs and outputs
en_x = ____(____, tr_en[____:____], onehot=____, reverse=____)
de_y = sents2seqs(____, tr_fr[____:____], onehot=True)
# Train the model on a single batch of data
nmt.____(____, ____)
# Evaluate the trained model on the validation data
res = nmt.evaluate(____, ____, batch_size=valid_size, verbose=0)
print("{} => Loss:{}, Val Acc: {}".format(ei+1,res[0], res[1]*100.0))