디코더 정의하기
이 연습 문제에서는 디코더를 구현하고, 인코더 입력에서 디코더 GRU 출력까지 이어지는 엔드 투 엔드 모델을 정의해 보겠습니다. 디코더는 인코더와 같은 모델을 사용하지만, 인코더와 비교했을 때 디코더에 전달되는 입력과 상태에는 차이가 있습니다. 예를 들어, 디코더는 인코더가 생성한 컨텍스트 벡터를 입력으로 사용하고, 동시에 디코더의 초기 상태로도 사용합니다. 인코더 관련 항목을 표시할 때는 en 접두사(예: en_gru)를, 디코더 관련 항목에는 de 접두사(예: de_gru)를 사용한다는 점을 기억하세요.
디코더를 구현하기 위해 RepeatVector와 GRU 레이어를 사용합니다.
이번 연습 문제에서는 이미 구현한 인코더 모델과 여러 인코더 레이어가 제공됩니다. 예를 들어, 인코더 입력은 en_inputs, 컨텍스트 벡터는 en_state로 제공됩니다. 또한 GRU와 Model 객체는 이미 import되어 있습니다.
이 연습은 강의의 일부입니다
Keras로 배우는 Machine Translation
연습 안내
en_state를 입력으로 받아fr_len번 반복하는RepeatVector레이어를 정의하세요.- 은닉 유닛 수가
hsize이고 모든 출력을 반환하는 GRU 레이어decoder_gru를 정의하세요. de_inputs를 입력으로,en_state를 디코더의 초기 상태로 넣어decoder_gru레이어의 출력을 얻으세요.- 입력이
en_inputs, 출력이gru_outputs인 모델을 정의하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
from tensorflow.keras.layers import RepeatVector
hsize = 48
fr_len = 20
# Define a RepeatVector layer
de_inputs = ____(____)(____)
# Define a GRU model that returns all outputs
decoder_gru = ____(____, ____=____)
# Get the outputs of the decoder
gru_outputs = ____(____, initial_state=____)
# Define a model with the correct inputs and outputs
enc_dec = ____(inputs=____, outputs=____)
enc_dec.summary()