Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Maak validatiegegevens door v_en en v_fr te transformeren met de functie sents2seqs.
  • Haal een correct getransformeerde batch inputs en outputs op met de functie sents2seqs.
  • Gebruik de inputs (en_x) en outputs (de_y) om de nmt op één batch te trainen.
  • Gebruik v_en_x en v_de_y samen met valid_size als batch_size om het nmt-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))
Code bewerken en uitvoeren