Определение энкодера
Здесь вы сделаете первый шаг к созданию модели машинного перевода: реализуете энкодер. Энкодер, который вы построите, значительно проще моделей, применяемых в реальных системах — например, в сервисе машинного перевода Google. Но не беспокойтесь: несмотря на простоту, концепции те же, что и в сложных моделях. Мы будем использовать префикс en (например, en_gru) для всего, что относится к энкодеру, и de — для всего, что относится к декодеру (например, de_gru).
Обратите внимание, что мы выбираем значение en_vocab равным 150, хотя фактический размер словаря составляет 228. Уменьшение словаря снижает потребление памяти моделью. Небольшое сокращение словаря вполне допустимо, так как при этом исключаются самые редкие слова. В задачах машинного перевода редкие слова, как правило, менее важны, чем частотные.
Это упражнение является частью курса
Машинный перевод с Keras
Инструкции к упражнению
- Определите слой
Inputдля входных данных с размером словаряen_vocabи длиной последовательностиen_len, используя аргументshape. - Определите слой
keras.layers.GRUсhsizeскрытыми единицами, который возвращает своё состояние. - Получите выходные данные слоя GRU, подав на вход
en_inputs: присвойте состояние GRU переменнойen_state, а вывод — переменнойen_out. - Определите модель
keras.models.Model, входом которой являетсяen_inputs, а выходом —en_state, и выведите сводку модели.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
import tensorflow.keras as keras
en_len = 15
en_vocab = 150
hsize = 48
# Define an input layer
en_inputs = keras.layers.____(____=____)
# Define a GRU layer which returns the state
en_gru = ____(____, ____=____)
# Get the output and state from the GRU
____, ____ = ____(____)
# Define and print the model summary
encoder = ____(inputs=____, ____=____)
print(encoder.____)