Определение слоёв модели с методом Teacher Forcing
В этом упражнении вы определите улучшенную версию модели машинного перевода, которую создавали ранее. Кстати, именно метод Teacher Forcing используется в таких системах, как Google Translate, для обучения моделей.
Как вы уже видели, предыдущую модель необходимо немного изменить, чтобы применить Teacher Forcing. В этом упражнении вы внесёте нужные изменения. Вам предоставлены следующие языковые параметры: en_len и fr_len — длины дополненных предложений на английском и французском языках, en_vocab и fr_vocab — размеры словарей английского и французского языков, а также hsize — размер скрытого слоя в слоях GRU. Обратите внимание: декодер принимает французскую последовательность на один элемент короче, чем fr_len. Для обозначения компонентов энкодера используется префикс en, а декодера — de.
Это упражнение является частью курса
Машинный перевод с Keras
Инструкции к упражнению
- Импортируйте подмодуль
layersизtensorflow.keras. - Получите выходные данные и состояние энкодера и присвойте их переменным
en_outиen_stateсоответственно. - Определите входной слой
Inputдекодера, принимающий последовательность длинойfr_len-1из французских слов в унитарном (onehot) кодировании. - Определите слой
TimeDistributedс функцией активации softmax иfr_vocabузлами на основе слояDense.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Import the layers submodule from keras
import ____.____.____ as layers
en_inputs = layers.Input(shape=(en_len, en_vocab))
en_gru = layers.GRU(hsize, return_state=True)
# Get the encoder output and state
____, ____ = en_gru(____)
# Define the decoder input layer
de_inputs = layers.____(shape=(____, ____))
de_gru = layers.GRU(hsize, return_sequences=True)
de_out = de_gru(de_inputs, initial_state=en_state)
# Define a TimeDistributed Dense softmax layer with fr_vocab nodes
de_dense = layers.____(____.____(____, activation=____))
de_pred = de_dense(de_out)