시작하기무료로 시작하기

임베딩 모델 정의하기

다음과 같은 Keras 모델을 정의해 보겠습니다.

  • Embedding 레이어를 사용하고
  • Teacher Forcing으로 학습합니다.

이 모델에는 두 개의 임베딩 레이어(인코더 임베딩 레이어와 디코더 임베딩 레이어)가 있습니다. 또한 모델은 Teacher Forcing으로 학습하므로, 디코더 Input 레이어에서 시퀀스 길이는 fr_len-1을 사용합니다.

이 연습에서는 필요한 keras.layersModel이 모두 임포트되어 있습니다. 또한 en_len(영어 시퀀스 길이), fr_len(프랑스어 시퀀스 길이), en_vocab(영어 어휘 크기), fr_vocab(프랑스어 어휘 크기), hsize(hidden size) 변수가 정의되어 있습니다.

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

Keras로 배우는 Machine Translation

강의 보기

연습 안내

  • 단어 ID 시퀀스를 받는 Input 레이어를 정의하세요.
  • en_vocab개의 단어를 임베딩하고, 임베딩 길이가 96이며, ID 시퀀스를 받을 수 있도록 하는 Embedding 레이어를 정의하세요(input_length 인자로 시퀀스 길이를 지정).
  • fr_vocab개의 단어를 임베딩하고, 임베딩 길이가 96이며, fr_len-1 길이의 ID 시퀀스를 받을 수 있도록 하는 Embedding 레이어를 정의하세요.
  • 인코더 입력과 디코더 입력(이 순서)에서 받아 단어 예측을 출력하는 모델을 정의하세요.

실습형 인터랙티브 연습

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

# Define an input layer which accepts a sequence of word IDs
en_inputs = Input(____=(____,))
# Define an Embedding layer which accepts en_inputs
en_emb = ____(____, ____, input_length=____)(en_inputs)
en_out, en_state = GRU(hsize, return_state=True)(en_emb)

de_inputs = Input(shape=(fr_len-1,))
# Define an Embedding layer which accepts de_inputs
de_emb = Embedding(____, 96, input_length=____)(____)
de_out, _ = GRU(hsize, return_sequences=True, return_state=True)(de_emb, initial_state=en_state)
de_pred = TimeDistributed(Dense(fr_vocab, activation='softmax'))(de_out)

# Define the Model which accepts encoder/decoder inputs and outputs predictions 
nmt_emb = Model([____, ____], ____)
nmt_emb.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
코드 편집 및 실행