Zacznij terazZacznij za darmo

Trenowanie modelu z walidacją

W tym ćwiczeniu wytrenujemy model z użyciem techniki Teacher Forcing oraz przeprowadzisz krok walidacji. Model będzie trenowany przez wiele epok i iteracji. Na koniec każdej epoki uruchomisz krok walidacji i sprawdzisz wyniki.

Do dyspozycji masz en_text (zdania angielskie), fr_text (zdania francuskie), funkcję sents2seqs() oraz nmt_tf (skompilowany model). Wczytane są również dane treningowe tr_en i tr_fr oraz dane walidacyjne v_en i v_fr.

To ćwiczenie jest częścią kursu

Tłumaczenie maszynowe z Keras

Zobacz kurs

Instrukcje do ćwiczenia

  • Wyodrębnij wejścia dekodera (wszystkie słowa z wyjątkiem ostatniego) oraz wyjścia dekodera (wszystkie słowa z wyjątkiem pierwszego) z de_xy.
  • Wytrenuj model na pojedynczej partii danych.
  • Utwórz wejścia i wyjścia dekodera na podstawie danych walidacyjnych – analogicznie do tego, jak zrobiłeś to dla danych treningowych.
  • Oceń model na zbiorze walidacyjnym, aby uzyskać stratę walidacyjną i dokładność.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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))
Edytuj i uruchom kod