Визначення шарів моделі з Teacher Forcing
Ви визначатимете нову й покращену версію моделі машинного перекладу, яку створювали раніше. Чи знали ви, що моделі на кшталт Google Machine Translator використовували техніку Teacher Forcing для тренування?
Як ви вже бачили, попередню модель потрібно трохи змінити, щоб застосувати Teacher Forcing. У цій вправі ви виконаєте потрібні зміни до попередньої моделі. Вам надано мовні параметри en_len і fr_len (довжина доповнених до фіксованої довжини англійських/французьких речень), en_vocab і fr_vocab (розмір словника англійського/французького наборів даних) та hsize (розмір прихованого шару шарів GRU). Пам'ятайте, що декодер прийматиме французьку послідовність на один елемент коротшу за fr_len. Також пам'ятайте, що префікс en використовується для всього, що стосується енкодера, а de — для декодера.
Ця вправа є частиною курсу
Machine Translation з Keras
Інструкції до вправи
- Імпортуйте підмодуль
layersзtensorflow.keras. - Отримайте вихід енкодера та значення стану й присвойте їх відповідно до
en_outіen_state. - Визначте шар
Inputдекодера, який приймає послідовність довжиниfr_len-1з onehot-кодованих французьких слів. - Визначте шар
TimeDistributedтипуDenseіз softmax та з кількістю вузлівfr_vocab.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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)