НачатьНачать бесплатно

Разделение данных на обучающую и валидационную выборки

Вы уже знаете, что обучение модели только на тренировочных данных без валидационной выборки приводит к проблеме, которая называется переобучением. При переобучении модель отлично справляется с предсказаниями на обучающих данных, однако плохо обобщается на новые, ранее не виденные данные. Это делает модель малополезной на практике. Чтобы избежать этой проблемы, используется валидационная выборка.

В этом упражнении вы создадите обучающую и валидационную выборки из имеющегося набора данных: 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])
Редактировать и запускать код