Inizia subitoInizia gratis

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

Visualizza corso

Istruzioni dell'esercizio

  • Definisci una sequenza di indici usando np.arange() che inizi da 0 e abbia la dimensione di en_text.
  • Definisci valid_inds come gli ultimi valid_size indici della sequenza di indici.
  • Definisci tr_en e tf_fr, che contengono le frasi trovate agli indici train_inds, nelle liste en_text e fr_text.
  • Definisci v_en e v_fr, che contengono le frasi trovate agli indici valid_inds, nelle liste en_text e fr_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])
Modifica ed esegui il codice