Обучение модели
В этом упражнении вы обучите ранее реализованную модель. Знаете ли вы, что модель машинного перевода 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))