НачатьНачать бесплатно

Определение декодера инференс-модели

Инференс-модель — это модель, которая используется в реальных условиях для выполнения переводов по запросу пользователя. В этом упражнении вам предстоит реализовать декодер инференс-модели.

Декодер инференс-модели отличается от декодера обучающей модели. Мы не можем подавать на вход декодеру французские слова, поскольку именно их нам нужно предсказать. К счастью, есть решение: можно использовать предсказанное на предыдущем шаге французское слово в качестве входных данных для декодера инференс-модели. Таким образом, при генерации перевода декодер формирует по одному слову за раз, используя предыдущий выход как вход.

Для этого упражнения импортированы переменные hsize (размер скрытого состояния слоя GRU), fr_len и fr_vocab. Напомним, что префикс de используется для обозначения декодера.

Это упражнение является частью курса

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

Посмотреть курс

Инструкции к упражнению

  • Определите слой Input, принимающий батч последовательностей французских слов в формате унитарного кодирования (длина последовательности равна 1).
  • Определите ещё один слой Input, принимающий батч состояний размером hsize, — он будет использоваться для передачи предыдущего состояния в декодер.
  • Получите выходные данные и состояние декодера GRU.
  • Определите модель, которая принимает входной слой французских слов Input и входной слой предыдущего состояния Input, а на выходе возвращает итоговое предсказание и новое состояние GRU.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

import tensorflow.keras.layers as layers
from tensorflow.keras.models import Model
# Define an input layer that accepts a single onehot encoded word
de_inputs = layers.____(shape=(____, ____))
# Define an input to accept the t-1 state
de_state_in = layers.____(shape=(____,))
de_gru = layers.GRU(hsize, return_state=True)
# Get the output and state from the GRU layer
de_out, de_state_out = ____(de_inputs, initial_state=____)
de_dense = layers.Dense(fr_vocab, activation='softmax')
de_pred = de_dense(de_out)

# Define a model
decoder = Model(inputs=[____, ____], outputs=[____, ____])
print(decoder.summary())
Редактировать и запускать код