Zacznij terazZacznij za darmo

Trenowanie modelu z walidacją

W tym ćwiczeniu nauczysz się, jak trenować model neuronowego tłumaczenia maszynowego z krokiem walidacji.

Do dyspozycji masz model nmt stworzony w poprzednim rozdziale. Będziesz trenować go na zdaniach angielskich i francuskich pobranych z repozytorium GitHub Udacity. Z poprzedniego ćwiczenia masz dostęp do treningowych tekstów angielskich (tr_en) i francuskich (tf_fr) oraz walidacyjnych tekstów angielskich (v_en) i francuskich (v_fr).

Trenowanie modelu zajmuje trochę czasu, więc uruchomienie kodu może potrwać nieco dłużej.

To ćwiczenie jest częścią kursu

Tłumaczenie maszynowe z Keras

Zobacz kurs

Instrukcje do ćwiczenia

  • Utwórz dane walidacyjne, przekształcając v_en i v_fr za pomocą funkcji sents2seqs.
  • Pobierz odpowiednio przekształconą paczkę danych wejściowych i wyjściowych, używając funkcji sents2seqs.
  • Użyj danych wejściowych (en_x) i wyjściowych (de_y), aby wytrenować model nmt na pojedynczej paczce danych.
  • Użyj v_en_x i v_de_y wraz z valid_size jako batch_size, aby ocenić model nmt i uzyskać dokładność walidacji.

Interaktywne ćwiczenie praktyczne

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

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