임베딩 모델 정의하기
다음과 같은 Keras 모델을 정의해 보겠습니다.
Embedding레이어를 사용하고- Teacher Forcing으로 학습합니다.
이 모델에는 두 개의 임베딩 레이어(인코더 임베딩 레이어와 디코더 임베딩 레이어)가 있습니다. 또한 모델은 Teacher Forcing으로 학습하므로, 디코더 Input 레이어에서 시퀀스 길이는 fr_len-1을 사용합니다.
이 연습에서는 필요한 keras.layers와 Model이 모두 임포트되어 있습니다. 또한 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'])