Навчання моделі з валідацією
Тут ви навчитеся тренувати модель нейронного машинного перекладу з кроком валідації.
Вам надано модель nmt, яку ви створили в попередньому розділі. Крім того, ви тренуватимете модель на англійських та французьких реченнях із Udacity Github Repo. Ви маєте тренувальні англійські тексти (tr_en) і французькі тексти (tf_fr), а також валідаційні англійські тексти (v_en) і французькі тексти (v_fr) з попередньої вправи.
Навчання моделі займає певний час, тож ваш код виконуватиметься трохи довше.
Ця вправа є частиною курсу
Machine Translation з Keras
Інструкції до вправи
- Створіть валідаційні дані, перетворивши
v_enіv_frза допомогою функціїsents2seqs. - Отримайте коректно перетворений батч вхідних і вихідних даних за допомогою функції
sents2seqs. - Використайте входи (
en_x) і виходи (de_y), щоб натренуватиnmtна одному батчі. - Використайте
v_en_xіv_de_yразом ізvalid_sizeякbatch_size, щоб оцінити модельnmtі отримати точність на валідації.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# Convert validation data to onehot
v_en_x = ____(____, ____, onehot=____, reverse=____)
v_de_y = ____(____, ____, onehot=True)
n_epochs, bsize = 3, 250
for ei in range(n_epochs):
for i in range(0,train_size,bsize):
# Get a single batch of inputs and outputs
en_x = ____(____, tr_en[____:____], onehot=____, reverse=____)
de_y = sents2seqs(____, tr_fr[____:____], onehot=True)
# Train the model on a single batch of data
nmt.____(____, ____)
# Evaluate the trained model on the validation data
res = nmt.evaluate(____, ____, batch_size=valid_size, verbose=0)
print("{} => Loss:{}, Val Acc: {}".format(ei+1,res[0], res[1]*100.0))