Definiera dekodern

Maskinöversättning med Keras

Thushan Ganegedara

Data Scientist and Author

Encoder-decoder-modell

  • Encodern läser in engelska ord ett i taget
  • Slutligen producerar den kontextvektorn
  • Dekodern tar kontextvektorn som initialtillstånd
  • Dekodern producerar franska ord ett i taget

Encoder-decoder-modell

Maskinöversättning med Keras

Dekoderns indata

  • Dekodern implementeras med ett Keras GRU-lager
  • GRU-modellen kräver två indata
    • En tidsserieingång (???)
    • Ett dolt tillstånd

Encoder-decoder-modell

Maskinöversättning med Keras

Dekoderns indata

Upprepa kontextvektorn från encodern N gånger

  • För att producera en fransk mening med 10 ord upprepas kontextvektorn 10 gånger.

Encoder-decoder-modell med repeat vector

Maskinöversättning med Keras

Förstå RepeatVector-lagret

RepeatVector-lagret:

  • Tar ett argument som anger sekvenslängden för utdata
  • Tar emot indata med formen (batch_size, input size) (t.ex. indata med storleken 2 x 3)
  • Producerar utdata med formen (batch_size, sequence length, input size) (t.ex. utdata med storleken 2 x 3 x 3)

RepeatVector-lagrets funktion

Maskinöversättning med Keras

Definiera ett RepeatVector-lager

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)
  • Observera att följande två är likvärdiga
rep = RepeatVector(5)
r_out = rep(r_inp)
r_out = RepeatVector(5)(r_inp)
Maskinöversättning med Keras

Göra prediktioner med modellen

Göra prediktioner med modellen

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)
Maskinöversättning med Keras

Implementera dekodern

Definiera dekodern

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

Sätt dekoderns initialtillstånd

gru_outputs = decoder_gru(de_inputs, initial_state=en_state)
Maskinöversättning med Keras

Definiera modellen

enc_dec = Model(inputs=en_inputs, outputs=gru_outputs)
Maskinöversättning med Keras

Nu kör vi en övning!

Maskinöversättning med Keras

Preparing Video For Download...