시작하기무료로 시작하기

모델 학습하기

이 연습 문제에서는 앞에서 구현한 모델을 학습해 보겠습니다. Google의 인코더-디코더 기반 Machine Learning 번역 모델은 학습에 2~4일이 걸렸다는 사실을 알고 계셨나요?

이번 연습에서는 1500개 문장(즉, en_textfr_text)으로 구성된 작은 데이터셋을 사용해 모델을 학습합니다. 이 정도 규모로는 좋은 성능을 기대하기 어렵지만, 방법 자체는 동일합니다. 더 많은 데이터로 더 오래 학습하는 것이 핵심이에요. 또한 이미 제공된 모델 nmt와 이전에 구현한 sents2seqs() 함수가 준비되어 있습니다. 이번 연습에서는 성능을 높이기 위해 인코더 텍스트를 역순으로 뒤집습니다. 여기에서 en_x는 인코더 입력을, de_x는 디코더 입력을 의미합니다.

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

Keras로 배우는 Machine Translation

강의 보기

연습 안내

  • sents2seqs() 함수를 사용해 인덱스 i부터 i+bsize까지의 영어 문장으로 구성된 인코더 입력 배치 한 개를 가져오세요. 입력은 역순으로 뒤집고 원-핫 인코딩해야 합니다.
  • sents2seqs() 함수를 사용해 인덱스 i부터 i+bsize까지의 프랑스어 문장으로 구성된 디코더 출력 배치 한 개를 가져오세요. 입력은 원-핫 인코딩해야 합니다.
  • en_xde_y로 구성된 단일 배치 데이터를 사용해 모델을 학습하세요.
  • batch_sizebsize로 설정해 모델을 평가하고, en_xde_y에 대한 평가 지표를 확인하세요.

실습형 인터랙티브 연습

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

n_epochs, bsize = 3, 250

for ei in range(n_epochs):
  for i in range(0,data_size,bsize):
    # Get a single batch of encoder inputs
    en_x = ____('source', ____, onehot=____, reverse=____)
    # Get a single batch of decoder outputs
    de_y = sents2seqs('target', fr_text[____], onehot=____)
    
    # Train the model on a single batch of data
    nmt.____(____, ____)    
    # Obtain the eval metrics for the training data
    res = nmt.____(____, de_y, batch_size=____, verbose=0)
    print("{} => Train Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))  
코드 편집 및 실행