我正在尝试在Pytorch中安装LSTM模型。我的数据太大,无法读取到内存中,因此我想使用Pytorch的{{1}}函数创建小批量数据。
我有两个功能作为输入(DataLoader
,X1
)。我有一个输出功能(y)。我将X2
和X1
的365个时间步用作预测X2
的功能。
我的训练数组的维度是:
y
== (n_observations, n_timesteps, n_features)
我不明白为什么下面的代码不起作用,因为我看到了其他示例,其中X,y对具有不同的维数(LSTM for runoff modelling,Pytorch's own docs)
(9498, 365, 2)
输出:
import numpy as np
import torch
from torch.utils.data import DataLoader
train_x = torch.Tensor(np.random.random((9498, 365, 2)))
train_y = torch.Tensor(np.random.random((9498, 1)))
val_x = torch.Tensor(np.random.random((1097, 365, 2)))
val_y = torch.Tensor(np.random.random((1097, 1)))
test_x = torch.Tensor(np.random.random((639, 365, 2)))
test_y = torch.Tensor(np.random.random((639, 1)))
train_dataset = (train_x, train_y)
test_dataset = (test_x, test_y)
val_dataset = (val_x, val_y)
train_dataloader = DataLoader(train_dataset, batch_size=256)
iterator = train_dataloader.__iter__()
iterator.next()
答案 0 :(得分:1)
torch.utils.data.DataLoader
必须获得一个torch.utils.data.Dataset
作为参数。您正在提供张量元组。我建议您按以下方式使用torch.utils.data.TensorDataset
:
from torch.utils.data import DataLoader, TensorDataset
train_x = torch.rand(9498, 365, 2)
train_y = torch.rand(9498, 1)
train_dataset = TensorDataset(train_x, train_y)
train_dataloader = DataLoader(train_dataset, batch_size=256)
for x, y in train_dataloader:
print (x.shape)
检查是否可以解决您的问题。