Aan de slagGa gratis aan de slag

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

Cursus bekijken

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