인코더 정의하기
이제 머신 번역 모델 만들기의 첫걸음, 인코더 구현을 해볼게요. 여기서 구현할 인코더는 Google의 머신 번역 서비스처럼 실제 서비스에 쓰이는 복잡한 모델에 비하면 아주 단순합니다. 하지만 걱정하지 마세요. 모델은 단순해도 핵심 개념은 복잡한 모델과 동일해요. 인코더와 관련된 것은 접두사 en(예: en_gru), 디코더와 관련된 것은 de(예: de_gru)로 구분하겠습니다.
또한 실제 측정한 값(228)보다 작은 150으로 en_vocab을 설정합니다. 어휘 크기를 줄이면 모델의 메모리 사용량이 감소해요. 이때 제거되는 것은 가장 희소한 단어들이므로 약간 줄이는 것은 괜찮습니다. 머신 번역에서는 드문 단어보다 자주 쓰이는 단어가 더 중요한 경우가 많기 때문입니다.
이 연습은 강의의 일부입니다
Keras로 배우는 Machine Translation
연습 안내
shape인자를 사용해 어휘 크기가en_vocab, 시퀀스 길이가en_len인 입력에 대한Input층을 정의하세요.- 은닉 유닛 수가
hsize이고 state를 반환하는keras.layers.GRU층을 정의하세요. en_inputs를 GRU 층에 전달하여 출력을 얻고, GRU의 state를en_state, 출력을en_out에 할당하세요.- 입력이
en_inputs, 출력이en_state인keras.models.Model을 정의하고 모델 요약을 출력하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
import tensorflow.keras as keras
en_len = 15
en_vocab = 150
hsize = 48
# Define an input layer
en_inputs = keras.layers.____(____=____)
# Define a GRU layer which returns the state
en_gru = ____(____, ____=____)
# Get the output and state from the GRU
____, ____ = ____(____)
# Define and print the model summary
encoder = ____(inputs=____, ____=____)
print(encoder.____)