Визначення декодера

Machine Translation з Keras

Thushan Ganegedara

Data Scientist and Author

Модель encoder–decoder

  • Енкодер зчитує англійські слова по одному
  • Наприкінці формує контекстний вектор
  • Декодер бере контекстний вектор як початковий стан
  • Декодер генерує французькі слова по одному

Модель encoder–decoder

Machine Translation з Keras

Вхід декодера

  • Декодер реалізовано за допомогою шару Keras GRU
  • Модель GRU потребує двох вхідних даних
    • Вхід часових рядів (???)
    • Прихований стан

Вхід декодера

Machine Translation з Keras

Вхід декодера

Повторіть контекстний вектор з енкодера N разів

  • Щоб отримати французьке речення з 10 слів, повторіть контекстний вектор 10 разів.

Повторення контекстного вектора в encoder–decoder

Machine Translation з Keras

Як працює шар RepeatVector

Шар RepeatVector:

  • Приймає один аргумент — довжину послідовності виходу
  • Отримує вхід (batch_size, input size) (напр., вхід розміру 2 x 3)
  • Повертає дані форми (batch_size, sequence length, input size) (напр., вихід 2 x 3 x 3)

Функціональність RepeatVector

Machine Translation з Keras

Визначення шару 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)
Machine Translation з Keras

Прогнозування за допомогою моделі

Прогнозування за допомогою моделі

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

Реалізація декодера

Визначення декодера

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

Фіксація початкового стану декодера

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

Визначення моделі

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

Давайте потренуємось!

Machine Translation з Keras

Preparing Video For Download...