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

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

Тут ви навчитеся реалізовувати процес тренування моделі машинного перекладу, що використовує вкладення слів (embeddings — векторні представлення). Слово подається як одне число, а не як one-hot вектор, як ви робили в попередніх вправах. Ви тренуватимете модель протягом кількох епох, проходячи весь набір даних пакетами.

У цій вправі вам надано тренувальні дані (tr_en і tr_fr) у вигляді списку речень. Ви використаєте лише дуже малу вибірку (1000 речень) з реальних даних, адже повне тренування може тривати надто довго. Також у вас є функція sents2seqs() і модель nmt_emb, які ви реалізували в попередній вправі. Пам'ятайте: для вхідних даних енкодера використовуємо en_x, а для вхідних даних декодера — de_x.

Ця вправа є частиною курсу

Machine Translation з Keras

Переглянути курс

Інструкції до вправи

  • Отримайте один пакет французьких речень без onehot-кодування за допомогою функції sents2seqs().
  • Візьміть усі слова, окрім останнього, з de_xy.
  • Візьміть усі слова, окрім першого, з de_xy_oh (французькі слова з onehot-кодуванням).
  • Навчіть модель, використовуючи один пакет даних.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

for ei in range(3):
  for i in range(0, train_size, bsize):    
    en_x = sents2seqs('source', tr_en[i:i+bsize], onehot=False, reverse=True)
    # Get a single batch of French sentences with no onehot encoding
    de_xy = ____('target', ____[i:i+bsize], ____=____)
    # Get all words except the last word in that batch
    de_x = de_xy[:,____]
    de_xy_oh = sents2seqs('target', tr_fr[i:i+bsize], onehot=True)
    # Get all words except the first from de_xy_oh
    de_y = de_xy_oh[____,____,____]
    # Training the model on a single batch of data
    nmt_emb.train_on_batch([____,____], ____)    
    res = nmt_emb.evaluate([en_x, de_x], de_y, batch_size=bsize, verbose=0)
    print("{} => Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))
Редагувати та запускати код