Определение декодера

Машинный перевод с Keras

Thushan Ganegedara

Data Scientist and Author

Модель энкодер-декодер

  • Энкодер принимает английские слова по одному
  • На выходе формирует контекстный вектор
  • Декодер принимает контекстный вектор как начальное состояние
  • Декодер генерирует французские слова по одному

Модель энкодер-декодер

Машинный перевод с Keras

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

  • Декодер реализован с помощью слоя GRU в Keras
  • Модель GRU принимает два входа
    • Вход в виде временного ряда (??)
    • Скрытое состояние

Модель энкодер-декодер

Машинный перевод с Keras

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

Контекстный вектор энкодера повторяется N раз

  • Чтобы сгенерировать французское предложение из 10 слов, вектор повторяется 10 раз.

Модель энкодер-декодер с повторением вектора

Машинный перевод с Keras

Слой RepeatVector: принцип работы

Слой RepeatVector:

  • Принимает один аргумент — длину выходной последовательности
  • Принимает входные данные формы (batch_size, input size) (например, вход размером 2 x 3)
  • Выдаёт данные формы (batch_size, sequence length, input size) (например, выход размером 2 x 3 x 3)

Принцип работы RepeatVector

Машинный перевод с 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)
Машинный перевод с 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)
Машинный перевод с 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)
Машинный перевод с Keras

Определение модели

enc_dec = Model(inputs=en_inputs, outputs=gru_outputs)
Машинный перевод с Keras

Давайте потренируемся!

Машинный перевод с Keras

Preparing Video For Download...