Diviser les données en ensembles d'entraînement et de validation
Vous avez appris qu'utiliser uniquement les données d'entraînement sans ensemble de validation mène à un problème appelé « surapprentissage » (overfitting). Lorsqu'il y a surapprentissage, le modèle prédit très bien les données pour les entrées d'entraînement, mais généralise très mal à des données jamais vues. Le modèle devient donc peu utile, puisqu'il ne peut pas bien généraliser. Pour éviter cela, vous pouvez utiliser un ensemble de validation.
Dans cet exercice, vous allez créer un ensemble d'entraînement et un ensemble de validation à partir du jeu de données dont vous disposez (c.-à-d. en_text contenant 1000 phrases en anglais et fr_text contenant les 1000 phrases en français). Vous utiliserez 80 % du jeu de données pour l'entraînement et 20 % pour la validation.
Cette activité fait partie du cours
Traduction automatique avec Keras
Instructions de l’exercice
- Définissez une séquence d'indices avec
np.arange(), qui commence à 0 et a pour taille celle deen_text. - Définissez
valid_indscomme les derniers indices (au nombre devalid_size) de la séquence d'indices. - Définissez
tr_enettf_fr, qui contiennent les phrases situées aux indicestrain_inds, dans les listesen_textetfr_text. - Définissez
v_enetv_fr, qui contiennent les phrases situées aux indicesvalid_inds, dans les listesen_textetfr_text.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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])