第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

PyTorch:時(shí)間序列任務(wù)的數(shù)據(jù)加載器

PyTorch:時(shí)間序列任務(wù)的數(shù)據(jù)加載器

幕布斯7119047 2022-05-24 16:42:52
我有一個(gè) Pandas 數(shù)據(jù)框,其中n行和k列加載到內(nèi)存中。我想為預(yù)測(cè)任務(wù)獲取批次,其中批次的第一個(gè)訓(xùn)練示例應(yīng)該具有(q, k)參考q原始數(shù)據(jù)幀中的行數(shù)(例如 0:128)的形狀。下一個(gè)例子應(yīng)該是(128:256, k)等等。因此,最終,一批應(yīng)該具有(32, q, k)與批量大小相對(duì)應(yīng)的 32 形狀。由于TensorDatasetfromdata_utils在這里不起作用,我想知道最好的方法是什么。我嘗試使用將qnp.array_split()值的可能拆分?jǐn)?shù)作為第一維,以便編寫自定義 DataLoader,但由于并非所有數(shù)組都具有相同的形狀,因此不能保證重新整形。這是一個(gè)更清楚的最小示例。在這種情況下,批量大小為 3,q為 2:import pandas as pdimport numpy as npdf = pd.DataFrame(data=np.arange(0,30).reshape(10,3),columns=['A','B','C'])數(shù)據(jù)集:    A   B   C0   0   1   21   3   4   52   6   7   83   9   10  114   12  13  145   15  16  176   18  19  207   21  22  238   24  25  269   27  28  29在這種情況下,第一批的形狀應(yīng)該是 (3,2,3),看起來(lái)像:array([[[ 0.,  1.,  2.],        [ 3.,  4.,  5.]],       [[ 3.,  4.,  5.],        [ 6.,  7.,  8.]],       [[ 6.,  7.,  8.],        [ 9., 10., 11.]]])
查看完整描述

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])


查看完整回答
反對(duì) 回復(fù) 2022-05-24
?
飲歌長(zhǎng)嘯

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]


查看完整回答
反對(duì) 回復(fù) 2022-05-24
?
慕工程0101907

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊

另一種方法是使用開源庫(kù) pytorch_forecasting。

時(shí)間序列數(shù)據(jù)集的鏈接可以在這里找到

使用此數(shù)據(jù)集的摘錄:
該數(shù)據(jù)集自動(dòng)執(zhí)行常見任務(wù),例如

  1. 變量的縮放和編碼

  2. 標(biāo)準(zhǔn)化目標(biāo)變量

  3. 有效地將 pandas 數(shù)據(jù)幀中的時(shí)間序列轉(zhuǎn)換為火炬張量

  4. 持有關(guān)于未來(lái)已知和未知的靜態(tài)和時(shí)變變量的信息

  5. 持有相關(guān)類別的信息(如假期)

  6. 數(shù)據(jù)增強(qiáng)的下采樣

  7. 生成推理、驗(yàn)證和測(cè)試數(shù)據(jù)集


查看完整回答
反對(duì) 回復(fù) 2022-05-24
  • 3 回答
  • 0 關(guān)注
  • 357 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)