0

假设我们有以下数据集,其中“s”代表“步”。

f1  f2  f3  f4  target
1   2   3   4     5
2   3   4   5     6
3   4   5   6     7
4   5   6   7     8
5   6   7   8     9

该模型由 4 个(时间)步骤组成。它给出一个数字作为输出(目标)。在第一个示例中,step1 输入为 1,step2 输入为 2,step3 输入为 3,step4 输入为 4。我们将训练一个序列模型(使用 RNN、LSTM 或其他),然后输出“5 " 对于这个特定的序列。其他示例中的逻辑也是相同的。

我担心如何将这样的数据集划分为训练集和开发集。(暂时忽略测试集。)

备选方案 1: 假设前 3 个样本构成训练集,接下来的 2 个样本构成开发集,如下图所示。

动车组:

f1  f2  f3  f4  target
1   2   3   4     5
2   3   4   5     6
3   4   5   6     7

开发集:

f1  f2  f3  f4  target
4   5   6   7     8
5   6   7   8     9

我担心的是:如果您查看最后一个训练集样本 ([3, 4, 5, 6], 7) 和第一个开发集样本 ([4, 5, 6, 7], 8),您会看到3 个输入步骤相同。(即使使用其他开发集样本也存在类似的问题。)

Q1:是不是有些输入步骤相同的问题?或者我们可以说它不应该仅仅因为(1)即使输入步骤相同,它们也用于序列的不同步骤,(2)每个序列示例的目标值仍然不同。

Q2:上面的问题,应该如何创建测试集?

4

1 回答 1

2

是的,没关系,因为它们处于不同的时间步长,并且序列也不相同。他们也有不同的目标。所以如果你训练好你的模型,你的模型肯定应该学会预测下一个字符。

于 2019-07-04T13:57:14.917 回答