了解馈送到 RNN 及其输出的数据的多维性质

数据挖掘 机器学习 时间序列 rnn 机器学习模型
2022-03-08 20:36:44

假设我们有一个时间序列数据集,其 window_size = 30 且 batch_size = 4,这使得整体输入 = 4*30 (2D)。但是由于 RNN 期望 3D 输入,tf.expand_dims因此将其用作 3D 输入(根据讲座,新 inut 变为 4*30*1,其中最后一个维度为 1,因为该示例处理单变量时间序列)。我不明白的是,添加维度是什么意思?例如。输入的元素 [0,0,0] 是什么?

同样在 keras 中,拟合的典型格式是

model.fit(input, output, epochs=400)

但是在时间序列数据的 RNN 示例代码中,我发现

model.fit(dataset, epochs=400)

其中 dataset 是一个包含时间序列数据的 tf 对象。为什么在第一个代码的情况下没有明确给出模型训练的输入和输出?时间戳已经以某种方式包含在输入中(在 4*30*1 输入中,第 2 维应该是时间戳),但是 keras 如何知道必须训练输入的输出标签是什么?

1个回答

我认为您对“批次”是什么感到困惑。批次在机器学习中有非常具体的定义。

在我的经验中:

  • 维度 1 = 每个时间步长的 bin 数或数据点数
  • 维度 2 = 窗口大小,时间步数
  • 维度 3 = 批量大小,您将在每个训练批次中提供给网络的示例总数

看起来像这样[4,3,2]

[[[0,1,4,3],[0,8,6,9],[9,6,7,4]],[[6,8,7,0],[1,7,7,9],[1,3,5,8]]]

每个时间步 4 个值,每个示例 3 个总时间步,批处理中的 2 个示例。

归来归来[0,0,0]_0[3,1,1]9

另外,一个友好的建议 - 不要考虑时间戳。你不是在处理 RNN 中的时间。您正在按顺序处理步骤该顺序可以与时间相关。

编辑:关于张量流的东西,一个tf.dataset对象可以包含每个示例的输入数据和标签。关键是使编写代码更容易,更容易管理数据等。

训练/测试的过程是相同的。