Rozdělení dat na trénovací a validační sadu
Jak už víš, trénování modelu pouze na trénovacích datech bez validační sady vede k problému zvanému overfitting (přetrénování). Při overfittingu model sice velmi dobře předpovídá výsledky pro trénovací vstupy, ale na nových, dosud neviděných datech si vede velmi špatně. Takový model pak není příliš užitečný, protože nedokáže zobecňovat. Tomuto problému se dá předejít použitím validační sady.
V tomto cvičení vytvoříš trénovací a validační sadu z dostupného datasetu (tedy en_text obsahujícího 1 000 anglických vět a fr_text obsahujícího 1 000 francouzských vět). Na trénovací data použiješ 80 % datasetu a na validační data zbývajících 20 %.
Toto cvičení je součástí kurzu
Machine Translation with Keras
Pokyny k cvičení
- Pomocí
np.arange()definuj posloupnost indexů začínající od 0 o velikosti odpovídající délceen_text. - Definuj
valid_indsjako posledníchvalid_sizeindexů z této posloupnosti. - Definuj
tr_enatf_fr, které budou obsahovat věty na indexechtrain_indsze seznamůen_textafr_text. - Definuj
v_enav_fr, které budou obsahovat věty na indexechvalid_indsze seznamůen_textafr_text.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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])