Het model trainen met validatie
Hier leer je hoe je het neural machine translator-model traint met een validatiestap.
Je krijgt het nmt-model dat je in het vorige hoofdstuk hebt gemaakt. Daarnaast train je het model op Engelse en Franse zinnen uit de Udacity Github Repo. Je krijgt trainings-Engelse tekst (tr_en) en Franse tekst (tf_fr), en ook validatie-Engelse tekst (v_en) en Franse tekst (v_fr) uit de vorige oefening.
Het trainen van het model kost wat tijd, dus je code draait iets langer.
Deze oefening maakt deel uit van de cursus
Machine Translation met Keras
Oefeninstructies
- Maak validatiegegevens door
v_enenv_frte transformeren met de functiesents2seqs. - Haal een correct getransformeerde batch inputs en outputs op met de functie
sents2seqs. - Gebruik de inputs (
en_x) en outputs (de_y) om denmtop één batch te trainen. - Gebruik
v_en_xenv_de_ysamen metvalid_sizealsbatch_sizeom hetnmt-model te evalueren en de validatienauwkeurigheid te verkrijgen.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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))