Definindo o decodificador

Machine Translation with Keras

Thushan Ganegedara

Data Scientist and Author

Modelo encoder-decoder

  • O encoder consome palavras em inglês, uma a uma
  • Por fim, produz o vetor de contexto
  • O decoder usa o vetor de contexto como estado inicial
  • O decoder produz palavras em francês, uma a uma

Modelo encoder-decoder

Machine Translation with Keras

Entrada do decoder

  • O decoder é implementado com uma camada GRU do Keras
  • O modelo GRU requer duas entradas
    • Uma entrada de série temporal (???)
    • Um estado oculto

Modelo encoder-decoder

Machine Translation with Keras

Entrada do decoder

Repita o vetor de contexto do encoder N vezes

  • Para gerar uma frase em francês com 10 palavras, repita o vetor 10 vezes.

Repetição do vetor no encoder-decoder

Machine Translation with Keras

Entendendo a camada RepeatVector

Camada RepeatVector:

  • Recebe um argumento que define o tamanho da sequência de saída desejada
  • Recebe entrada (batch_size, tamanho da entrada) (ex.: entrada de tamanho 2 x 3)
  • Gera saída com forma (batch_size, tamanho da sequência, tamanho da entrada) (ex.: saída de tamanho 2 x 3 x 3)

Funcionalidade do RepeatVector

Machine Translation with Keras

Definindo uma camada 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)
  • Observe que as duas formas abaixo são equivalentes
rep = RepeatVector(5)
r_out = rep(r_inp)
r_out = RepeatVector(5)(r_inp)
Machine Translation with Keras

Fazendo predições com o modelo

Fazendo predições com o modelo

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)
Machine Translation with Keras

Implementando o decoder

Definindo o decoder

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

Fixando o estado inicial do decoder

gru_outputs = decoder_gru(de_inputs, initial_state=en_state)
Machine Translation with Keras

Definindo o modelo

enc_dec = Model(inputs=en_inputs, outputs=gru_outputs)
Machine Translation with Keras

Vamos praticar!

Machine Translation with Keras

Preparing Video For Download...