Suddividere i dati in training e validation set
Hai imparato che usare solo i dati di training senza un dataset di validazione porta a un problema chiamato overfitting. Quando si verifica overfitting, il modello sarà molto bravo a prevedere i dati sui quali si è allenato, ma generalizzerà molto male a dati mai visti. Questo significa che il modello non sarà molto utile, perché non sa generalizzare. Per evitarlo, puoi usare un dataset di validazione.
In questo esercizio, creerai un training set e un validation set a partire dal dataset che hai (cioè en_text contenente 1000 frasi in inglese e fr_text contenente le 1000 frasi in francese). Userai l’80% del dataset per il training e il 20% per la validazione.
Questo esercizio fa parte del corso
Traduzione automatica con Keras
Istruzioni dell'esercizio
- Definisci una sequenza di indici usando
np.arange()che inizi da 0 e abbia la dimensione dien_text. - Definisci
valid_indscome gli ultimivalid_sizeindici della sequenza di indici. - Definisci
tr_enetf_fr, che contengono le frasi trovate agli indicitrain_inds, nelle listeen_textefr_text. - Definisci
v_enev_fr, che contengono le frasi trovate agli indicivalid_inds, nelle listeen_textefr_text.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
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])