Aan de slagGa gratis aan de slag

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

Cursus bekijken

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_x en de_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))  
Code bewerken en uitvoeren