【问题标题】:LSTM input reshape for multi variate data多元数据的 LSTM 输入形状
【发布时间】:2017-06-21 12:08:27
【问题描述】:

我有一个包含多个输入和输出的数据集,我想将其与 Keras LSTM 一起使用。我试图弄清楚数据需要如何重塑。

原始数据如下:

Time, Temp(X1), Pressure(X2), Stress(Y1), Life(Y2)          
1,  T1, P1, S1, L1
2,  T2, P2, S2, L2
3,  T3, P3, S3, L3
4,  T4, P4, S4, L4
5,  T5, P5, S5, L5
6,  T6, P6, S6, L6

我们可以使用温度、压力、应力和寿命的 2 个先前值来估计应力和寿命的当前值。因此,使用 2 的回顾/时间步长,我们可以使用 i 将我的数据重新排列为以下内容: X 训练矩阵变为 (4,10) 形状:

T1, P1, T2, P2, T3, P3, S1, L1, S2, L2
T2, P2, T3, P3, T4, P4, S2, L2, S3, L3
T3, P3, T4, P4, T5, P5, S3, L3, S4, L4
T4, P4, T5, P5, T6, P6, S4, L4, S5, L5

Y 训练矩阵变为 (4,2) 形状:

 S3, L3
 S4, L4
 S5, L5
 S6, L6

Keras 需要将输入重塑为 [样本、时间步长、特征]

samples=4
timesteps/lookback=2
Original data X features=2

但是不可能将 (4, 10) 的 X 训练矩阵重塑为 (4,2,2)。那么,问题在哪里?

另外,Y 训练矩阵的形状应该是什么?

【问题讨论】:

  • 您必须将时间索引 6 和 7 替换为 5 和 6

标签: keras lstm


【解决方案1】:

您想从 n-1 和 n-2 中预测第 n 个值。因此,您可以在数据上创建一个“滑动窗口”来创建样本。

数据@T1 和 T2 预测 T3

数据@T2 和 T3 预测 T4

以此类推,直到

数据@T4 和 T5 预测 T6

所以你最终会得到 4 个样本,由前 2 个时间步长的 X1、X2、Y1 和 Y2 定义

您的输入数据将是

X = [[[T1, P1, S1, L1]
      [T2, P2, S2, L2]],
     [[T2, P2, S2, L2],
       T3, P3, S3, L3]],
     [[T3, P3, S3, L3]
       T4, P4, S4, L4]],
     [[T4, P4, S4, L4],
       T5, P5, S5, L5]]]

以及你想要预测的值

y = [[S3, L3],
     [S4, L4],
     [S5, L5],
     [S6, L6]]

【讨论】:

  • 我正在尝试使用 X1 和 X2 的当前值以及 X1、X2、Y1、Y2 的先前值来预测 Y1 和 Y2 的当前值。
  • @trumee 我将编辑我的答案以仅从过去的 X1 和 X2 预测当前的 Y1、Y2
  • 我已经更新了上面的 X 矩阵。在您的第一个示例中,您为什么省略当前值 T3 和 P3。它们也应该用于估计 S3、L3。
  • @trumee 实际上不确定您是否可以在由不同数量的特征定义的每个时间步进行观察(4 个用于过去的观察,2 个用于当前的观察)。
  • 对,您发布的 X 矩阵的顺序是正确的 [样本、时间步长、特征],所以不需要重新整形,对吧?
猜你喜欢
  • 1970-01-01
  • 2019-04-22
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-19
相关资源
最近更新 更多