Pytorch LSTM输入

wpx232ag  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(118)

我目前有一个包含多个特征的数据集,其中每行是一个时间序列,每列是一个时间步。例如:


的数据
当我使用pytorch LSTM时,我应该如何重新塑造数据,以便我可以正确地表示顺序信息?
目前,我保持原样,将特征转换为Tensor,并将其 Package 在变量中,并使用以下代码重塑它:

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工具转换它?

w8f9ii69

w8f9ii691#

在当前配置下使用LSTM没有意义。LSTM对于处理可变长度序列很有用。如果设置了特征数量,并且您的Tensor大小都是(num_rows, 1, num_features),则可以将其压缩为(num_rows, num_features)并将其放入MLP。
如果你想使用LSTM类型的方法,你可以这样做:

  • 创建大小为(num_rows, num_features)的Tensor,其中所有特征都是整数值(我从您的电子表格示例中推断出这一点)
  • 将这些Tensor放入nn.Embedding层,得到大小为(num_rows, num_features, d_features)的Tensor
  • 通过LSTM发送大小为(num_rows, num_features, d_features)的Tensor

也就是说,如果输入的特征数量是固定的,就不需要使用LSTM。LSTM用于处理可变长度序列。
顺便说一句,看起来你正在使用几年前已经过时的Variable语法-你应该查看pytorch的最新文档。

相关问题