Definiowanie dekodera

Tłumaczenie maszynowe z Keras

Thushan Ganegedara

Data Scientist and Author

Model enkoder-dekoder

  • Enkoder przetwarza słowa angielskie jedno po drugim
  • Na końcu generuje wektor kontekstu
  • Dekoder przyjmuje wektor kontekstu jako stan początkowy
  • Dekoder generuje słowa francuskie jedno po drugim

Model enkoder-dekoder

Tłumaczenie maszynowe z Keras

Wejście dekodera

  • Dekoder jest zaimplementowany za pomocą warstwy GRU Keras
  • Model GRU wymaga dwóch wejść
    • Wejście szeregu czasowego (??)
    • Stan ukryty

Model enkoder-dekoder

Tłumaczenie maszynowe z Keras

Wejście dekodera

Powtórzenie wektora kontekstu z enkodera N razy

  • Aby wygenerować zdanie po francusku złożone z 10 słów, wektor kontekstu powtarza się 10 razy.

Warstwa RepeatVector w modelu enkoder-dekoder

Tłumaczenie maszynowe z Keras

Warstwa RepeatVector

Warstwa RepeatVector:

  • Przyjmuje jeden argument określający długość sekwencji wyjściowej
  • Przyjmuje dane wejściowe o kształcie (batch_size, rozmiar_wejścia) (np. wejście 2 x 3)
  • Zwraca dane o kształcie (batch_size, długość sekwencji, rozmiar_wejścia) (np. wyjście 2 x 3 x 3)

Działanie warstwy RepeatVector

Tłumaczenie maszynowe z Keras

Definiowanie warstwy 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)
  • Poniższe zapisy są równoważne
rep = RepeatVector(5)
r_out = rep(r_inp)
r_out = RepeatVector(5)(r_inp)
Tłumaczenie maszynowe z Keras

Przewidywanie za pomocą modelu

Przewidywanie za pomocą modelu

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)
Tłumaczenie maszynowe z Keras

Implementacja dekodera

Definiowanie dekodera

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

Ustawianie stanu początkowego dekodera

gru_outputs = decoder_gru(de_inputs, initial_state=en_state)
Tłumaczenie maszynowe z Keras

Definiowanie modelu

enc_dec = Model(inputs=en_inputs, outputs=gru_outputs)
Tłumaczenie maszynowe z Keras

Czas na ćwiczenia!

Tłumaczenie maszynowe z Keras

Preparing Video For Download...