시작하기무료로 시작하기

Word embedding 기반 모델 학습

이 연습에서는 word embedding을 사용하는 기계 번역 모델의 학습 과정을 구현해 보세요. 이전 연습과 달리, 단어는 원-핫 인코딩 벡터가 아닌 단일 숫자로 표현됩니다. 전체 데이터를 배치로 순회하며 여러 epoch에 걸쳐 모델을 학습합니다.

이 연습에서는 문장 리스트 형태의 학습 데이터(tr_en, tr_fr)가 제공됩니다. 학습 시간이 너무 길어질 수 있으므로 실제 데이터 중 극히 일부(1000문장)만 사용합니다. 또한 이전 연습에서 구현한 sents2seqs() 함수와 모델 nmt_emb가 주어집니다. 인코더 입력은 en_x, 디코더 입력은 de_x로 표기한다는 점을 기억하세요.

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

Keras로 배우는 Machine Translation

강의 보기

연습 안내

  • sents2seqs() 함수를 사용해 원-핫 인코딩 없이 프랑스어 문장의 배치 한 개를 가져오세요.
  • de_xy에서 마지막 단어를 제외한 모든 단어를 가져오세요.
  • de_xy_oh(원-핫 인코딩된 프랑스어 단어)에서 첫 번째 단어를 제외한 모든 단어를 가져오세요.
  • 배치 한 개의 데이터로 모델을 학습하세요

실습형 인터랙티브 연습

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

for ei in range(3):
  for i in range(0, train_size, bsize):    
    en_x = sents2seqs('source', tr_en[i:i+bsize], onehot=False, reverse=True)
    # Get a single batch of French sentences with no onehot encoding
    de_xy = ____('target', ____[i:i+bsize], ____=____)
    # Get all words except the last word in that batch
    de_x = de_xy[:,____]
    de_xy_oh = sents2seqs('target', tr_fr[i:i+bsize], onehot=True)
    # Get all words except the first from de_xy_oh
    de_y = de_xy_oh[____,____,____]
    # Training the model on a single batch of data
    nmt_emb.train_on_batch([____,____], ____)    
    res = nmt_emb.evaluate([en_x, de_x], de_y, batch_size=bsize, verbose=0)
    print("{} => Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))
코드 편집 및 실행