我很难理解pytorch中LSTM的数据格式。假设我有一个CSV文件,它有4个特性,一个接一个地用时间戳(一个经典的时间序列)进行布局。
time1 feature1 feature2 feature3 feature4
time2 feature1 feature2 feature3 feature4
time3 feature1 feature2 feature3 feature4
time4 feature1 feature2 feature3 feature4, label然而,这一整组4个序列只有一个标签。我们试图分类的东西是从time1开始的,但我们直到第4次才知道如何给它贴上标签。
我的问题是,一个典型的火炬LSTM能支持这一点吗?我读过、看过、读过的所有教程都涉及到一个单一特性的时间序列,或者一个单词模型,它仍然是一个具有单一维度的数据集。
如果它能够支持它,那么数据是否需要以某种方式被扁平化?
Pytorch的LSTM参考状态:
输入:(L,N,Hin)(L,N,H_{in})(L,N,Hin)当batch_first=False或(N,L,Hin})(N,L,Hin})(N,L,Hin)包含输入序列特征时的形状张量。输入也可以是一个压缩可变长度序列。
这是否意味着它不能支持任何包含多个序列的输入?或者这有别的名字?
我在这里真的迷路了,可能需要任何建议,指点,帮助等等。也许也能消除歧义。
我在这里发过几次帖子,但都没有得到任何回复。如果这篇文章放错了位置,有人能友好地引导我到正确的地方张贴吗?
编辑:按照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的输出将是预测的标签。我有错吗?
发布于 2022-02-07 19:06:00
如您所示,LSTM层的输入大小为(batch_size、Sequence_length、feature_size)。这意味着特征被假定为一维向量。
因此,要在您的情况下使用它,您需要将您的四个特性叠加到一个向量中(如果它们大于1D本身,然后首先将它们压平),并使用该向量作为该层的输入。
关于标签的事。仅在几次迭代之后才有一个标签是不受支持的。LSTM将输出与输入序列长度相同的序列,但在训练LSTM时,您可以选择在丢失函数中使用该序列的任何部分。在您的情况下,您只想使用最后一个元素。
https://stackoverflow.com/questions/71023822
复制相似问题