Het model trainen met validatie
Hier ga je het model trainen met Teacher Forcing en ook een validatiestap uitvoeren. Je traint het model voor meerdere epochs en meerdere iteraties. Aan het einde van elke epoch voer je de validatiestap uit en bekijk je de resultaten.
Hiervoor heb je en_text (Engelse zinnen), fr_text (Franse zinnen), de functie sents2seqs() en nmt_tf (het gecompileerde model) gekregen. Ook zijn tr_en en tr_fr (trainingsgegevens) en v_en en v_fr (validatiegegevens) al ingeladen.
Deze oefening maakt deel uit van de cursus
Machine Translation met Keras
Oefeninstructies
- Haal decoder-invoer (alle woorden behalve het laatste) en -uitvoer (alle woorden behalve het eerste) uit
de_xy. - Train het model op één batch met data.
- Maak decoder-invoer en -uitvoer van de validatiegegevens, vergelijkbaar met hoe je dat voor de trainingsgegevens deed.
- Evalueer het model op de validatieset om de validatieverlies en de nauwkeurigheid te verkrijgen.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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))