开始使用免费开始使用

训练模型

在本练习中,您将训练之前实现的模型。您知道吗,Google 基于编码器-解码器的机器翻译模型需要训练 2–4 天?

本练习中,您将使用包含 1,500 个句子的小型数据集(即 en_textfr_text)来训练模型。这个规模很难获得很好的效果,但方法完全相同。只是需要用更多数据并训练更久。我们已经为您提供了模型 nmt,以及您之前实现的 sents2seqs() 函数。本练习中,您将对编码器文本进行反转以获得更好的性能。这里,en_x 表示编码器输入,de_x 表示解码器输入。

本练习是课程的一部分

使用 Keras 的机器翻译

查看课程

练习说明

  • 使用 sents2seqs() 函数获取一批编码器输入(索引从 ii+bsize 的英文句子)。输入需要先反转并进行独热编码。
  • 使用 sents2seqs() 函数获取一批解码器输出(索引从 ii+bsize 的法文句子)。输入需要进行独热编码。
  • 在包含 en_xde_y 的单个批次数据上训练模型。
  • bsize 作为 batch_size,对模型进行评估,从而获得 en_xde_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))  
编辑并运行代码