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

Определение модели с эмбеддингами

Вам предстоит определить модель Keras, которая:

  • использует слои Embedding;
  • будет обучаться с применением Teacher Forcing.

Модель будет содержать два слоя эмбеддингов: один для энкодера и один для декодера. Поскольку модель обучается с использованием Teacher Forcing, в слое Input декодера задаётся длина последовательности fr_len-1.

Для выполнения этого упражнения все необходимые keras.layers и Model уже импортированы. Также определены переменные: en_len (длина последовательности на английском), fr_len (длина последовательности на французском), en_vocab (размер словаря английского языка), fr_vocab (размер словаря французского языка) и hsize (размер скрытого состояния).

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

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

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

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

  • Определите слой Input, принимающий последовательность идентификаторов слов.
  • Определите слой Embedding, который формирует эмбеддинги для en_vocab слов, имеет длину 96 и принимает последовательность идентификаторов (длина последовательности задаётся с помощью аргумента input_length).
  • Определите слой Embedding, который формирует эмбеддинги для fr_vocab слов, имеет длину 96 и принимает последовательность из fr_len-1 идентификаторов.
  • Определите модель, которая принимает входные данные от энкодера и входные данные от декодера (именно в таком порядке) и выдаёт предсказания слов.

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

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

# Define an input layer which accepts a sequence of word IDs
en_inputs = Input(____=(____,))
# Define an Embedding layer which accepts en_inputs
en_emb = ____(____, ____, input_length=____)(en_inputs)
en_out, en_state = GRU(hsize, return_state=True)(en_emb)

de_inputs = Input(shape=(fr_len-1,))
# Define an Embedding layer which accepts de_inputs
de_emb = Embedding(____, 96, input_length=____)(____)
de_out, _ = GRU(hsize, return_sequences=True, return_state=True)(de_emb, initial_state=en_state)
de_pred = TimeDistributed(Dense(fr_vocab, activation='softmax'))(de_out)

# Define the Model which accepts encoder/decoder inputs and outputs predictions 
nmt_emb = Model([____, ____], ____)
nmt_emb.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
Редактировать и запускать код