Dela upp data i tränings- och valideringsset
Du har lärt dig att enbart använda träningsdata utan ett valideringsdataset leder till ett problem som kallas overfitting (överanpassning). När överanpassning uppstår blir modellen mycket bra på att förutsäga träningsdata, men generaliserar mycket dåligt till ny, osedd data. Det gör modellen begränsad i praktiken. För att undvika detta kan du använda ett valideringsdataset.
I den här övningen skapar du ett tränings- och valideringsset från det dataset du har (det vill säga en_text med 1 000 engelska meningar och fr_text med 1 000 franska meningar). Du använder 80 % av datasetet som träningsdata och 20 % som valideringsdata.
Den här övningen är en del av kursen
Maskinöversättning med Keras
Övningsinstruktioner
- Definiera en sekvens av index med hjälp av
np.arange(), som börjar på 0 och har storlekenen_text. - Definiera
valid_indssom de sistavalid_sizeindexen från sekvensen av index. - Definiera
tr_enochtf_fr, som innehåller meningarna vidtrain_inds-indexen i listornaen_textochfr_text. - Definiera
v_enochv_fr, som innehåller meningarna vidvalid_inds-indexen i listornaen_textochfr_text.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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])