Zacznij terazZacznij za darmo

Podział danych na zbiór treningowy i walidacyjny

Wiesz już, że trenowanie modelu wyłącznie na danych treningowych – bez zbioru walidacyjnego – prowadzi do problemu zwanego overfittingiem (przeuczeniem). Gdy dochodzi do przeuczenia, model bardzo dobrze radzi sobie z przewidywaniem wyników dla danych treningowych, ale słabo generalizuje na nowe, niewidziane dane. Taki model jest mało użyteczny. Aby tego uniknąć, warto skorzystać ze zbioru walidacyjnego.

W tym ćwiczeniu utworzysz zbiór treningowy i walidacyjny na podstawie dostępnych danych (tj. en_text zawierającego 1000 zdań angielskich oraz fr_text zawierającego 1000 zdań francuskich). Do trenowania wykorzystasz 80% danych, a pozostałe 20% przeznaczy się na walidację.

To ćwiczenie jest częścią kursu

Tłumaczenie maszynowe z Keras

Zobacz kurs

Instrukcje do ćwiczenia

  • Zdefiniuj sekwencję indeksów za pomocą np.arange(), zaczynającą się od 0 i mającą rozmiar równy długości en_text.
  • Zdefiniuj valid_inds jako ostatnie valid_size indeksów z tej sekwencji.
  • Zdefiniuj tr_en i tf_fr zawierające zdania spod indeksów train_inds z list en_text i fr_text.
  • Zdefiniuj v_en i v_fr zawierające zdania spod indeksów valid_inds z list en_text i fr_text.

Interaktywne ćwiczenie praktyczne

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

train_size, valid_size = 800, 200
# Define a sequence of indices from 0 to len(en_text)
inds = ____.____(len(_____))
np.random.shuffle(inds)
train_inds = inds[:train_size]
# Define valid_inds: last valid_size indices
valid_inds = inds[____]
# Define tr_en (train EN sentences) and tr_fr (train FR sentences)
tr_en = [en_text[____] for ti in ____]
tr_fr = [____ for ti in ____]
# Define v_en (valid EN sentences) and v_fr (valid FR sentences)
v_en = [____ for vi in valid_inds]
v_fr = [____ for vi in ____]
print('Training (EN):\n', tr_en[:3], '\nTraining (FR):\n', tr_fr[:3])
print('\nValid (EN):\n', v_en[:3], '\nValid (FR):\n', v_fr[:3])
Edytuj i uruchom kod