디코더 정의

Keras로 배우는 Machine Translation

Thushan Ganegedara

Data Scientist and Author

인코더-디코더 모델

  • 인코더는 영어 단어를 순서대로 처리합니다
  • 마지막에 컨텍스트 벡터를 생성합니다
  • 디코더는 이 컨텍스트 벡터를 초기 상태로 사용합니다
  • 디코더는 프랑스어 단어를 순서대로 생성합니다

인코더-디코더 모델

Keras로 배우는 Machine Translation

디코더의 입력

  • 디코더는 Keras GRU 층으로 구현합니다
  • GRU 모델에는 두 입력이 필요합니다
    • 시계열 입력(???)
    • 은닉 상태

인코더-디코더 모델

Keras로 배우는 Machine Translation

디코더의 입력

인코더의 컨텍스트 벡터를 N번 반복합니다

  • 10단어 프랑스어 문장을 만들려면 컨텍스트 벡터를 10번 반복합니다.

컨텍스트 벡터 반복

Keras로 배우는 Machine Translation

RepeatVector 층 이해하기

RepeatVector 층:

  • 출력 시퀀스 길이를 정하는 인자 하나를 받습니다
  • (batch_size, input size) 입력을 받습니다 (예: 2 x 3)
  • (batch_size, sequence length, input size) 모양으로 출력합니다 (예: 2 x 3 x 3)

RepeatVector 동작

Keras로 배우는 Machine Translation

RepeatVector 층 정의하기

from tensorflow.keras.layers import RepeatVector
rep = RepeatVector(5)
r_inp = Input(shape=(3,))
r_out = rep(r_inp)
repeat_model = Model(inputs=r_inp, outputs=r_out)
  • 다음 두 코드는 동일합니다
rep = RepeatVector(5)
r_out = rep(r_inp)
r_out = RepeatVector(5)(r_inp)
Keras로 배우는 Machine Translation

모델로 예측하기

모델로 예측하기

x = np.array([[0,1,2],[3,4,5]])
y = repeat_model.predict(x)
print('x.shape = ',x.shape,'\ny.shape = ',y.shape)
x.shape =  (2, 3) 
y.shape =  (2, 5, 3)
Keras로 배우는 Machine Translation

디코더 구현

디코더 정의

de_inputs = RepeatVector(fr_len)(en_state)
decoder_gru = GRU(hsize, return_sequences=True)

디코더 초기 상태 고정

gru_outputs = decoder_gru(de_inputs, initial_state=en_state)
Keras로 배우는 Machine Translation

모델 정의

enc_dec = Model(inputs=en_inputs, outputs=gru_outputs)
Keras로 배우는 Machine Translation

Ayo berlatih!

Keras로 배우는 Machine Translation

Preparing Video For Download...