开始使用免费开始使用

将数据划分为训练集和验证集

您已经了解到,只使用训练数据而没有验证数据集会导致"过拟合"。一旦过拟合,模型在训练输入上的预测会很好,但对未见数据的泛化能力会很差。也就是说,模型无法泛化,实际用途不大。为避免这种情况,您可以使用验证数据集。

在本练习中,您将把现有数据集拆分为训练集和验证集(即 en_text 含有 1000 个英文句子,fr_text 含有对应的 1000 个法文句子)。您将使用 80% 的数据作为训练集,20% 的数据作为验证集。

本练习是课程的一部分

使用 Keras 的机器翻译

查看课程

练习说明

  • 使用 np.arange() 定义一组索引,从 0 开始,长度为 en_text 的大小。
  • 将索引序列的最后 valid_size 个索引定义为 valid_inds
  • 在列表 en_textfr_text 中,按 train_inds 提取对应句子,分别定义为 tr_entf_fr
  • 在列表 en_textfr_text 中,按 valid_inds 提取对应句子,分别定义为 v_env_fr

交互式实操练习

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

train_size, valid_size = 800, 200
# Define a sequence of indices from 0 to len(en_text)
inds = ____.____(len(_____))
np.random.shuffle(inds)
train_inds = inds[:train_size]
# Define valid_inds: last valid_size indices
valid_inds = inds[____]
# Define tr_en (train EN sentences) and tr_fr (train FR sentences)
tr_en = [en_text[____] for ti in ____]
tr_fr = [____ for ti in ____]
# Define v_en (valid EN sentences) and v_fr (valid FR sentences)
v_en = [____ for vi in valid_inds]
v_fr = [____ for vi in ____]
print('Training (EN):\n', tr_en[:3], '\nTraining (FR):\n', tr_fr[:3])
print('\nValid (EN):\n', v_en[:3], '\nValid (FR):\n', v_fr[:3])
编辑并运行代码