Aan de slagGa gratis aan de slag

Het model trainen

In deze oefening ga je het eerder geïmplementeerde model trainen. Wist je dat Google’s encoder-decoder gebaseerde machinevertalingsmodel 2–4 dagen nodig had om te trainen?

Voor deze oefening gebruik je een kleine gegevensset van 1500 zinnen (dus en_text en fr_text) om het model te trainen. Dat is lang niet genoeg voor goede prestaties, maar de werkwijze blijft hetzelfde. Het is een kwestie van langer en met meer data trainen. Je hebt ook het model nmt en de functie sents2seqs() gekregen die je eerder hebt gemaakt. In deze oefening draai je de encoder-tekst om om betere prestaties te krijgen. Hier verwijst en_x naar de encoder-input en de_x naar de decoder-input.

Deze oefening maakt deel uit van de cursus

Machine Translation met Keras

Cursus bekijken

Oefeninstructies

  • Haal één batch encoder-inputs op (Engelse zinnen van index i tot i+bsize) met de functie sents2seqs(). Inputs moeten omgekeerd en onehot-gecodeerd worden.
  • Haal één batch decoder-outputs op (Franse zinnen van index i tot i+bsize) met de functie sents2seqs(). Inputs moeten onehot-gecodeerd worden.
  • Train het model op één batch met data die en_x en de_y bevat.
  • Verkrijg de evaluatiemetrics voor en_x en de_y door het model te evalueren met een batch_size van bsize.

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):
    # Get a single batch of encoder inputs
    en_x = ____('source', ____, onehot=____, reverse=____)
    # Get a single batch of decoder outputs
    de_y = sents2seqs('target', fr_text[____], onehot=____)
    
    # Train the model on a single batch of data
    nmt.____(____, ____)    
    # Obtain the eval metrics for the training data
    res = nmt.____(____, de_y, batch_size=____, verbose=0)
    print("{} => Train Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))  
Code bewerken en uitvoeren