开始使用免费开始使用

结合验证来训练模型

在这里,您将使用 Teacher Forcing 训练模型,并执行一次验证步骤。您会在多个 epoch 和多次迭代上进行训练。然后在每个 epoch 结束时,运行验证步骤并获取结果。

为此,已为您提供 en_text(英文句子)、fr_text(法文句子)、sents2seqs() 函数以及 nmt_tf(已编译的模型)。同时,训练数据 tr_entr_fr,以及验证数据 v_env_fr 也已加载完毕。

本练习是课程的一部分

使用 Keras 的机器翻译

查看课程

练习说明

  • de_xy 中提取解码器输入(除最后一个词外的所有词)与解码器输出(除第一个词外的所有词)。
  • 在单个批次的数据上训练模型一次。
  • 参照训练数据的处理方式,从验证数据中创建解码器输入与输出。
  • 在验证数据集上评估模型,获取验证损失和准确率。

交互式实操练习

通过完成这段示例代码来试试这个练习。

for ei in range(n_epochs):
  for i in range(0,train_size,bsize):    
    en_x = sents2seqs('source', tr_en[i:i+bsize], onehot=True, reverse=True)
    de_xy = sents2seqs('target', tr_fr[i:i+bsize], onehot=True)
    # Create a single batch of decoder inputs and outputs
    de_x, de_y = ____[:,____,:], de_xy[:,____,:]
    # Train the model on a single batch of data
    nmt_tf.____([____,____], de_y)      
  v_en_x = sents2seqs('source', v_en, onehot=True, reverse=True)
  # Create a single batch of validation decoder inputs and outputs
  v_de_xy = ____('target', ____, onehot=____)
  v_de_x, v_de_y = ____[____], v_de_xy[____]
  # Evaluate the trained model on the validation data
  res = nmt_tf.evaluate([____,____], ____, batch_size=valid_size, verbose=0)
  print("{} => Loss:{}, Val Acc: {}".format(ei+1,res[0], res[1]*100.0))
编辑并运行代码