시작하기무료로 시작하기

훈련/검증 세트로 데이터 나누기

검증 데이터셋 없이 훈련 데이터만 사용하면 과적합(overfitting) 문제가 발생할 수 있다는 것을 배웠어요. 과적합이 일어나면 모델은 훈련 입력에 대해서는 매우 잘 예측하지만, 보지 못한 데이터에 대해서는 일반화가 잘 되지 않아요. 즉, 일반화가 되지 않으므로 실용성이 떨어집니다. 이를 피하려면 검증 데이터셋을 사용해야 해요.

이 연습 문제에서는 현재 가진 데이터셋(즉, 1000개의 영어 문장이 들어 있는 en_text와 1000개의 프랑스어 문장이 들어 있는 fr_text)에서 훈련 세트와 검증 세트를 만들 거예요. 데이터셋의 80%는 훈련용, 20%는 검증용으로 사용합니다.

이 연습은 강의의 일부입니다

Keras로 배우는 Machine Translation

강의 보기

연습 안내

  • np.arange()를 사용해 0부터 시작하고 크기가 en_text와 같은 인덱스 시퀀스를 정의하세요.
  • 인덱스 시퀀스에서 마지막 valid_size개의 인덱스를 valid_inds로 정의하세요.
  • 리스트 en_textfr_text에서 train_inds 위치의 문장을 담아 tr_entf_fr를 정의하세요.
  • 리스트 en_textfr_text에서 valid_inds 위치의 문장을 담아 v_env_fr를 정의하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

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])
코드 편집 및 실행