3 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
我最終也編寫了自定義數(shù)據(jù)集,盡管它與上面的答案有點(diǎn)不同:
class TimeseriesDataset(torch.utils.data.Dataset):
def __init__(self, X, y, seq_len=1):
self.X = X
self.y = y
self.seq_len = seq_len
def __len__(self):
return self.X.__len__() - (self.seq_len-1)
def __getitem__(self, index):
return (self.X[index:index+self.seq_len], self.y[index+self.seq_len-1])
用法如下:
train_dataset = TimeseriesDataset(X_lstm, y_lstm, seq_len=4)
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size = 3, shuffle = False)
for i, d in enumerate(train_loader):
print(i, d[0].shape, d[1].shape)
>>>
# shape: tuple((batch_size, seq_len, n_features), (batch_size))
0 torch.Size([3, 4, 2]) torch.Size([3])

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以編寫 TensorDataset 的模擬。為此,您需要從 Dataset 類繼承。
from torch.utils.data import Dataset, DataLoader
class MyDataset(Dataset):
def __init__(self, data_frame, q):
self.data = data_frame.values
self.q = q
def __len__(self):
return self.data.shape[0] // self.q
def __getitem__(self, index):
return self.data[index * self.q: (index+1) * self.q]

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
另一種方法是使用開源庫(kù) pytorch_forecasting。
時(shí)間序列數(shù)據(jù)集的鏈接可以在這里找到
使用此數(shù)據(jù)集的摘錄:
該數(shù)據(jù)集自動(dòng)執(zhí)行常見任務(wù),例如
變量的縮放和編碼
標(biāo)準(zhǔn)化目標(biāo)變量
有效地將 pandas 數(shù)據(jù)幀中的時(shí)間序列轉(zhuǎn)換為火炬張量
持有關(guān)于未來(lái)已知和未知的靜態(tài)和時(shí)變變量的信息
持有相關(guān)類別的信息(如假期)
數(shù)據(jù)增強(qiáng)的下采樣
生成推理、驗(yàn)證和測(cè)試數(shù)據(jù)集
添加回答
舉報(bào)