我目前有一个包含多个特征的数据集,其中每行是一个时间序列,每列是一个时间步。例如:
的数据
当我使用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工具转换它?
1条答案
按热度按时间w8f9ii691#
在当前配置下使用LSTM没有意义。LSTM对于处理可变长度序列很有用。如果设置了特征数量,并且您的Tensor大小都是
(num_rows, 1, num_features)
,则可以将其压缩为(num_rows, num_features)
并将其放入MLP。如果你想使用LSTM类型的方法,你可以这样做:
(num_rows, num_features)
的Tensor,其中所有特征都是整数值(我从您的电子表格示例中推断出这一点)nn.Embedding
层,得到大小为(num_rows, num_features, d_features)
的Tensor(num_rows, num_features, d_features)
的Tensor也就是说,如果输入的特征数量是固定的,就不需要使用LSTM。LSTM用于处理可变长度序列。
顺便说一句,看起来你正在使用几年前已经过时的
Variable
语法-你应该查看pytorch的最新文档。