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

Обучение модели

В этом упражнении вы обучите ранее реализованную модель. Знаете ли вы, что модель машинного перевода Google на основе архитектуры «энкодер — декодер» обучалась 2–4 дня?

Для этого упражнения вы будете использовать небольшой набор данных из 1500 предложений (то есть en_text и fr_text). Такого объёма едва ли хватит для достижения высокого качества, однако метод остаётся тем же самым — для лучших результатов нужно обучать модель на большем количестве данных дольше по времени. Вам также предоставлены модель nmt и функция sents2seqs(), которую вы реализовали ранее. В этом упражнении вы будете обращать текст энкодера для повышения качества. Здесь en_x обозначает вход энкодера, а de_x — вход декодера.

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

Машинный перевод с 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))  
Редактировать и запускать код