在验证集上训练模型
在这里,您将学习如何在包含验证步骤的情况下训练神经机器翻译模型。
我们已为您提供上一章构建的 nmt 模型。此外,您将使用从 Udacity Github Repo 获取的英法句子来训练模型。上一练习中已提供训练用英文文本(tr_en)和法文文本(tf_fr),以及验证用英文文本(v_en)和法文文本(v_fr)。
训练模型需要一些时间,因此您的代码运行会稍慢一些。
本练习是课程的一部分
使用 Keras 的机器翻译
练习说明
- 使用
sents2seqs函数对v_en和v_fr进行转换,创建验证数据。 - 使用
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))