Dividindo os dados em conjuntos de treino e validação
Você aprendeu que usar apenas os dados de treino sem um conjunto de validação leva a um problema chamado overfitting. Quando há overfitting, o modelo fica muito bom em prever os dados dos inputs de treino, mas generaliza muito mal para dados não vistos. Isso significa que o modelo não será muito útil, pois não consegue generalizar. Para evitar isso, você pode usar um conjunto de validação.
Neste exercício, você vai criar um conjunto de treino e outro de validação a partir do conjunto de dados que você tem (ou seja, en_text contendo 1000 frases em inglês e fr_text contendo as 1000 frases em francês). Você usará 80% do conjunto de dados para treino e 20% para validação.
Este exercício faz parte do curso
Machine Translation with Keras
Instruções do exercício
- Defina uma sequência de índices usando
np.arange(), começando em 0 e com tamanho igual aen_text. - Defina
valid_indscomo os últimos índices (em númerovalid_size) dessa sequência de índices. - Defina
tr_enetf_fr, que devem conter as frases localizadas nos índicestrain_inds, nas listasen_textefr_text. - Defina
v_enev_fr, que devem conter as frases localizadas nos índicesvalid_inds, nas listasen_textefr_text.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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])