Навчання моделі
У цій вправі ви навчатимете модель, реалізовану раніше. Чи знали ви, що модель машинного перекладу Google на основі зв'язки енкодер–декодер тренували 2–4 дні?
У цій вправі ви використаєте невеликий набір даних із 1500 речень (тобто en_text і fr_text) для навчання моделі. Цього навряд чи вистачить для високої якості, але підхід лишається тим самим. Потрібно тренувати довше й на більшій кількості даних. Також вам надано модель nmt і функцію sents2seqs(), яку ви реалізували раніше. Щоб поліпшити результат, ви реверсуватимете текст для енкодера в цій вправі. Тут en_x — це вхід енкодера, а de_x — вхід декодера.
Ця вправа є частиною курсу
Machine Translation з Keras
Інструкції до вправи
- Отримайте один батч вхідних даних для енкодера (англійські речення з індексу
iдоi+bsize) за допомогою функціїsents2seqs(). Входи потрібно реверсувати та onehot-кодувати. - Отримайте один батч вихідних даних для декодера (французькі речення з індексу
iдоi+bsize) за допомогою функціїsents2seqs(). Входи потрібно onehot-кодувати. - Навчіть модель на одному батчі даних, що містить
en_xіde_y. - Отримайте метрики оцінювання для
en_xіde_y, оцінивши модель зbatch_size, рівнимbsize.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
n_epochs, bsize = 3, 250
for ei in range(n_epochs):
for i in range(0,data_size,bsize):
# Get a single batch of encoder inputs
en_x = ____('source', ____, onehot=____, reverse=____)
# Get a single batch of decoder outputs
de_y = sents2seqs('target', fr_text[____], onehot=____)
# Train the model on a single batch of data
nmt.____(____, ____)
# Obtain the eval metrics for the training data
res = nmt.____(____, de_y, batch_size=____, verbose=0)
print("{} => Train Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))