시작하기무료로 시작하기

Teacher Forcing 모델 레이어 정의하기

앞에서 정의한 기계 번역 모델을 더 개선한 새 버전을 만들어 보겠습니다. Google Machine Translator 같은 모델도 Teacher Forcing 기법으로 학습했다는 사실, 알고 계셨나요?

이미 살펴본 것처럼, 이전 모델이 Teacher Forcing을 적용하려면 약간의 변경이 필요해요. 이번 연습에서는 이전 모델에 필요한 수정 사항을 반영합니다. 언어 매개변수 en_lenfr_len(패딩된 영어/프랑스어 문장의 길이), en_vocabfr_vocab(영어/프랑스어 데이터셋의 단어 집합 크기), 그리고 hsize(GRU 레이어의 은닉 상태 크기)가 제공되어 있어요. 디코더는 fr_len보다 한 항목 적은 길이의 프랑스어 시퀀스를 입력으로 받는다는 점을 기억하세요. 인코더 관련 항목에는 접두사 en, 디코더 관련 항목에는 de를 사용합니다.

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

Keras로 배우는 Machine Translation

강의 보기

연습 안내

  • tensorflow.keras에서 layers 서브모듈을 임포트하세요.
  • 인코더 출력과 상태 값을 가져와 각각 en_outen_state에 할당하세요.
  • 원-핫 인코딩된 프랑스어 단어의 길이 fr_len-1 시퀀스를 받는 디코더 Input 레이어를 정의하세요.
  • 노드 수가 fr_vocabTimeDistributed Dense softmax 레이어를 정의하세요.

실습형 인터랙티브 연습

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

# Import the layers submodule from keras
import ____.____.____ as layers

en_inputs = layers.Input(shape=(en_len, en_vocab))
en_gru = layers.GRU(hsize, return_state=True)
# Get the encoder output and state
____, ____ = en_gru(____)

# Define the decoder input layer
de_inputs = layers.____(shape=(____, ____))
de_gru = layers.GRU(hsize, return_sequences=True)
de_out = de_gru(de_inputs, initial_state=en_state)
# Define a TimeDistributed Dense softmax layer with fr_vocab nodes
de_dense = layers.____(____.____(____, activation=____))
de_pred = de_dense(de_out)
코드 편집 및 실행