训练模型
在本练习中,您将训练之前实现的模型。您知道吗,Google 基于编码器-解码器的机器翻译模型需要训练 2–4 天?
本练习中,您将使用包含 1,500 个句子的小型数据集(即 en_text 和 fr_text)来训练模型。这个规模很难获得很好的效果,但方法完全相同。只是需要用更多数据并训练更久。我们已经为您提供了模型 nmt,以及您之前实现的 sents2seqs() 函数。本练习中,您将对编码器文本进行反转以获得更好的性能。这里,en_x 表示编码器输入,de_x 表示解码器输入。
本练习是课程的一部分
使用 Keras 的机器翻译
练习说明
- 使用
sents2seqs()函数获取一批编码器输入(索引从i到i+bsize的英文句子)。输入需要先反转并进行独热编码。 - 使用
sents2seqs()函数获取一批解码器输出(索引从i到i+bsize的法文句子)。输入需要进行独热编码。 - 在包含
en_x和de_y的单个批次数据上训练模型。 - 以
bsize作为batch_size,对模型进行评估,从而获得en_x和de_y的评估指标。
交互式实操练习
通过完成这段示例代码来试试这个练习。
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))