모델 학습하기
2017년에 Google Translate가 하루에 5억 명이 넘는 사용자에게 서비스를 제공했다는 사실을 알고 계셨나요?
여기서는 첫 번째 Teacher Forcing 모델을 학습해 보겠습니다. Teacher Forcing은 시퀀스-투-시퀀스 모델(예: 신경 기계 번역기)에서 성능을 높이기 위해 흔히 사용돼요.
sents2seqs() 함수, 영어 문장 en_text, 프랑스어 문장 fr_text가 제공됩니다.
이 연습은 강의의 일부입니다
Keras로 배우는 Machine Translation
연습 안내
- 프랑스어 단어의 원-핫 인코딩 시퀀스에서(각 시퀀스의 마지막 단어를 제외한) 디코더 입력을 구하세요.
- 프랑스어 단어의 원-핫 인코딩 시퀀스에서(각 시퀀스의 첫 단어를 제외한) 디코더 출력을 구하세요.
- 단일 배치 데이터로 모델을 학습하세요.
- 학습 데이터
en_x,de_x,de_y에 대한 평가 지표(손실과 정확도)를 얻으세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
n_epochs, bsize = 3, 250
for ei in range(n_epochs):
for i in range(0,data_size,bsize):
en_x = sents2seqs('source', en_text[i:i+bsize], onehot=True, reverse=True)
de_xy = sents2seqs('target', fr_text[i:i+bsize], onehot=True)
# Separate the decoder inputs from de_xy
de_x = ____[:,____,:]
# Separate the decoder outputs from de_xy
de_y = ____[____]
# Train the model on a single batch of data
nmt_tf.____([____,____], ____)
# Obtain the eval metrics for the training data
res = _____.evaluate([____,____], ____, batch_size=bsize, verbose=0)
print("{} => Train Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))