Обучение модели с шагом валидации
В этом упражнении вы узнаете, как обучать модель нейронного машинного перевода с шагом валидации.
Вам предоставлена модель nmt, созданная в предыдущей главе. Вы будете обучать её на английских и французских предложениях из репозитория Udacity на GitHub. Из предыдущего упражнения вам доступны: обучающие тексты на английском (tr_en) и французском (tf_fr), а также валидационные тексты на английском (v_en) и французском (v_fr).
Обучение модели занимает некоторое время, поэтому выполнение кода может потребовать чуть больше времени, чем обычно.
Это упражнение является частью курса
Машинный перевод с 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))