De decoder definiëren

Machine Translation met Keras

Thushan Ganegedara

Data Scientist and Author

Encoder-decodermodel

  • Encoder verwerkt Engelse woorden één voor één
  • Produceert uiteindelijk de contextvector
  • Decoder gebruikt de contextvector als begintoestand
  • Decoder produceert Franse woorden één voor één

Encoder-decodermodel

Machine Translation met Keras

Input van de decoder

  • Decoder is geïmplementeerd met een Keras GRU-laag
  • GRU-model vereist twee inputs
    • Een tijdreeksinput (???)
    • Een verborgen toestand

Encoder-decodermodel

Machine Translation met Keras

Input van de decoder

Herhaal de contextvector van de encoder N keer

  • Voor een Franse zin van 10 woorden herhaal je de contextvector 10 keer.

Herhaal contextvector

Machine Translation met Keras

De RepeatVector-laag begrijpen

RepeatVector-laag:

  • Neemt één argument dat de sequentielengte van de output bepaalt
  • Inputvorm: (batch_size, inputgrootte) (bijv. input van 2 x 3)
  • Outputvorm: (batch_size, sequentielengte, inputgrootte) (bijv. output van 2 x 3 x 3)

Functionaliteit van RepeatVector

Machine Translation met Keras

Een RepeatVector-laag definiëren

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)
  • Let op: de volgende twee zijn gelijkwaardig
rep = RepeatVector(5)
r_out = rep(r_inp)
r_out = RepeatVector(5)(r_inp)
Machine Translation met Keras

Voorspellen met het model

Voorspellen met het model

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 met Keras

De decoder implementeren

De decoder definiëren

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

De begintoestand van de decoder vastzetten

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

Het model definiëren

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

Laten we oefenen!

Machine Translation met Keras

Preparing Video For Download...