开始使用免费开始使用

在验证集上训练模型

在这里,您将学习如何在包含验证步骤的情况下训练神经机器翻译模型。

我们已为您提供上一章构建的 nmt 模型。此外,您将使用从 Udacity Github Repo 获取的英法句子来训练模型。上一练习中已提供训练用英文文本(tr_en)和法文文本(tf_fr),以及验证用英文文本(v_en)和法文文本(v_fr)。

训练模型需要一些时间,因此您的代码运行会稍慢一些。

本练习是课程的一部分

使用 Keras 的机器翻译

查看课程

练习说明

  • 使用 sents2seqs 函数对 v_env_fr 进行转换,创建验证数据。
  • 使用 sents2seqs 函数获取已正确转换的输入与输出批次。
  • 使用输入(en_x)和输出(de_y)在单个批次上训练 nmt
  • 使用 v_en_xv_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))
编辑并运行代码