我目前有一个具有多个特征的数据集,其中每一行都是一个时间序列,每一列都是一个时间步长。例如:
当我使用 pytorch LSTM 时,我应该如何重新调整数据,以便能够正确表示顺序信息?
目前我保持原样,将特征转换为张量并将其包装在变量内,并使用以下代码对其进行重塑:
X_train_tensors = Variable(torch.Tensor(X_train), requires_grad=True)
X_test_tensors = Variable(torch.Tensor(X_test), requires_grad=True)
y_train_tensors = Variable(torch.Tensor(y_train), requires_grad=True)
y_test_tensors = Variable(torch.Tensor(y_test))
最终形状看起来像:
torch.Size([num_rows, 1, num_features])
LSTM 运行良好,但是,我担心我没有通过保持数据集的方向来捕获数据集的顺序性质?我应该将每一行作为时间序列,将列作为时间序列吗?在这种情况下,最终的形状会是什么样子,我如何使用 pytorch 工具对其进行转换?
在您当前的配置下使用 LSTM 是没有意义的。 LSTM 对于处理可变长度序列非常有用。如果设置了特征数量并且张量的大小均为
(num_rows, 1, num_features)
,您可以将其压缩为 (num_rows, num_features)
并将它们放入 MLP。
如果你想使用 LSTM 类型的方法,你会这样做:
(num_rows, num_features)
的张量,其中所有特征都是整数值(我从您的电子表格示例中推断出这一点)nn.Embedding
层以获得大小为 (num_rows, num_features, d_features)
(num_rows, num_features, d_features)
的张量也就是说,如果输入的特征数量是固定的,则无需使用 LSTM。当您必须处理可变长度序列时,可以使用 LSTM。
顺便说一句,看起来您正在使用几年前已被弃用的
Variable
语法 - 您应该查看 pytorch 的当前文档。