Het model trainen
Wist je dat Google Translate in 2017 dagelijks meer dan 500 miljoen gebruikers bediende?
Hier ga je je eerste Teacher Forced-model trainen. Teacher Forcing wordt vaak gebruikt in sequence-to-sequence-modellen, zoals je neural machine translator, om betere prestaties te behalen.
Je krijgt de functie sents2seqs(), Engelse zinnen en_text en Franse zinnen fr_text.
Deze oefening maakt deel uit van de cursus
Machine Translation met Keras
Oefeninstructies
- Haal de decoder-input op met de onehot-gecodeerde reeksen Franse woorden (behalve het laatste woord in elke reeks).
- Haal de decoder-output op met de onehot-gecodeerde reeksen Franse woorden (behalve het eerste woord in elke reeks).
- Train het model op één batch aan data.
- Verkrijg de evaluatiemetrics (loss en accuracy) voor trainingsdata
en_x,de_xende_y.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
n_epochs, bsize = 3, 250
for ei in range(n_epochs):
for i in range(0,data_size,bsize):
en_x = sents2seqs('source', en_text[i:i+bsize], onehot=True, reverse=True)
de_xy = sents2seqs('target', fr_text[i:i+bsize], onehot=True)
# Separate the decoder inputs from de_xy
de_x = ____[:,____,:]
# Separate the decoder outputs from de_xy
de_y = ____[____]
# Train the model on a single batch of data
nmt_tf.____([____,____], ____)
# Obtain the eval metrics for the training data
res = _____.evaluate([____,____], ____, batch_size=bsize, verbose=0)
print("{} => Train Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))