ПочатиПочніть безкоштовно

Навчання моделі

У цій вправі ви навчатимете модель, реалізовану раніше. Чи знали ви, що модель машинного перекладу 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))  
Редагувати та запускати код