Разделение данных на обучающую и валидационную выборки
Вы уже знаете, что обучение модели только на тренировочных данных без валидационной выборки приводит к проблеме, которая называется переобучением. При переобучении модель отлично справляется с предсказаниями на обучающих данных, однако плохо обобщается на новые, ранее не виденные данные. Это делает модель малополезной на практике. Чтобы избежать этой проблемы, используется валидационная выборка.
В этом упражнении вы создадите обучающую и валидационную выборки из имеющегося набора данных: en_text содержит 1000 английских предложений, а fr_text — 1000 французских предложений. Для обучения вы будете использовать 80% данных, а 20% отведёте на валидацию.
Это упражнение является частью курса
Машинный перевод с Keras
Инструкции к упражнению
- С помощью
np.arange()определите последовательность индексов, начинающуюся с 0 и имеющую размер, равный длинеen_text. - Определите
valid_indsкак последниеvalid_sizeиндексов из этой последовательности. - Определите
tr_enиtr_fr— списки предложений изen_textиfr_text, соответствующих индексамtrain_inds. - Определите
v_enиv_fr— списки предложений изen_textиfr_text, соответствующих индексамvalid_inds.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
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])