LSTM,pytorch中的多变量,多特征

LSTM, multi-variate, multi-feature in pytorch

我无法理解 pytorch 中 LSTM 的数据格式。假设我有一个包含 4 个特征的 CSV 文件,一个接一个地以时间戳排列(经典时间序列)

time1 feature1 feature2 feature3 feature4
time2 feature1 feature2 feature3 feature4
time3 feature1 feature2 feature3 feature4
time4 feature1 feature2 feature3 feature4,  label

然而,这整套 4 个序列只有一个标签。我们试图分类的东西从时间 1 开始,但直到时间 4 才知道如何标记它。
我的问题是,一个典型的 pytorch LSTM 能支持这个吗?我读过、看过、走过的所有教程,都涉及查看单个特征的时间序列,或者词模型,它仍然是一个单一维度的数据集。

如果能支持的话,是不是需要对数据做一些扁平化处理?

Pytorch 的 LSTM 参考状态:

输入:形状张量 (L,N,Hin)(L, N, H_{in})(L,N,Hin ) 当 batch_first=False 或 (N,L,Hin )(N, L, H_{in})(N,L,Hin ) when batch_first=True 包含输入序列的特征。输入也可以是压缩的可变长度序列。

这是否意味着它不支持任何包含多个序列的输入?或者还有别的名字吗?

我真的迷路了,可以使用任何建议、指点、帮助等。也许也有些歧义。

我在这里 post 编辑了几次,但完全没有收到任何回复。如果这个 post 放错了地方,有人可以指引我到 post 的正确位置吗?

编辑:根据 Daniel 的建议,我是否正确理解四个特征应该像这样放在一起:

[(feature1, feature2, feature3, feature4, feature1, feature2, feature3, feature4, feature1, feature2, feature3, feature4, feature1, feature2, feature3, feature4), label]  when given to the LSTM?

如果这是正确的,那么在这种情况下输入大小是 (16) 吗?

最后,我的印象是 LSTM 的输出将是预测标签。我说错了吗?

如您所示,LSTM 层的输入大小为 (batch_size、Sequence_length、feature_size)。这意味着该特征被假定为一维向量。

因此,要在您的情况下使用它,您需要将四个特征堆叠到一个向量中(如果它们本身大于一维,则先将它们展平)并将该向量用作层的输入。

关于标签。坚决支持仅在几次迭代后才具有标签。 LSTM 将输出与输入序列长度相同的序列,但在训练 LSTM 时,您可以选择在损失函数中使用该序列的任何部分。在您的情况下,您只想使用最后一个元素。