Împărțirea datelor în seturi de antrenament și validare
Ai aflat că utilizarea exclusivă a datelor de antrenament, fără un set de validare, duce la o problemă numită supraadaptare (overfitting). Când apare supraadaptarea, modelul va prezice foarte bine datele de antrenament, însă va generaliza extrem de slab pe date noi, nevăzute. Aceasta înseamnă că modelul nu va fi prea util, deoarece nu poate generaliza. Pentru a evita acest lucru, poți folosi un set de validare.
În acest exercițiu, vei crea un set de antrenament și un set de validare din setul de date disponibil (adică en_text, care conține 1.000 de propoziții în engleză, și fr_text, care conține cele 1.000 de propoziții în franceză). Vei folosi 80% din date pentru antrenament și 20% pentru validare.
Acest exercițiu face parte din cursul
Traducere automată cu Keras
Instrucțiuni pentru exercițiu
- Definește o secvență de indici folosind
np.arange(), care să înceapă de la 0 și să aibă dimensiunea egală cuen_text. - Definește
valid_indsca ultimiivalid_sizeindici din secvența de indici. - Definește
tr_enșitf_fr, care să conțină propozițiile de la indiciitrain_indsdin listeleen_textșifr_text. - Definește
v_enșiv_fr, care să conțină propozițiile de la indiciivalid_indsdin listeleen_textșifr_text.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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])