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
Istruzioni dell'esercizio
- Ottieni un singolo batch di input per l'encoder (frasi inglesi dall'indice
iai+bsize) usando la funzionesents2seqs(). Gli input devono essere invertiti e one-hot encoded. - Ottieni un singolo batch di output per il decoder (frasi francesi dall'indice
iai+bsize) usando la funzionesents2seqs(). Gli input devono essere one-hot encoded. - Addestra il modello su un singolo batch di dati contenente
en_xede_y. - Ottieni le metriche di valutazione per
en_xede_yvalutando il modello con unbatch_sizepari absize.
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))