您好,登錄后才能下訂單哦!
這篇文章主要介紹“PyTorch中torch.utils.data.DataLoader怎么使用”,在日常操作中,相信很多人在PyTorch中torch.utils.data.DataLoader怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PyTorch中torch.utils.data.DataLoader怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
作用:torch.utils.data.DataLoader 主要是對數據進行 batch 的劃分。
數據加載器,結合了數據集和取樣器,并且可以提供多個線程處理數據集。
在訓練模型時使用到此函數,用來 把訓練數據分成多個小組 ,此函數 每次拋出一組數據 。直至把所有的數據都拋出。就是做一個數據的初始化。
好處:
使用DataLoader的好處是,可以快速的迭代數據。
用于生成迭代數據非常方便。
注意:
除此之外,特別要注意的是輸入進函數的數據一定得是可迭代的。如果是自定的數據集的話可以在定義類中用def__len__、def__getitem__定義。
BATCH_SIZE 剛好整除數據量
""" 批訓練,把數據變成一小批一小批數據進行訓練。 DataLoader就是用來包裝所使用的數據,每次拋出一批數據 """ import torch import torch.utils.data as Data BATCH_SIZE = 5 # 批訓練的數據個數 x = torch.linspace(1, 10, 10) # 訓練數據 print(x) y = torch.linspace(10, 1, 10) # 標簽 print(y) # 把數據放在數據庫中 torch_dataset = Data.TensorDataset(x, y) # 對給定的 tensor 數據,將他們包裝成 dataset loader = Data.DataLoader( # 從數據庫中每次抽出batch size個樣本 dataset=torch_dataset, # torch TensorDataset format batch_size=BATCH_SIZE, # mini batch size shuffle=True, # 要不要打亂數據 (打亂比較好) num_workers=2, # 多線程來讀數據 ) def show_batch(): for epoch in range(3): for step, (batch_x, batch_y) in enumerate(loader): # training print("steop:{}, batch_x:{}, batch_y:{}".format(step, batch_x, batch_y)) show_batch()
輸出結果:
tensor([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
tensor([10., 9., 8., 7., 6., 5., 4., 3., 2., 1.])
steop:0, batch_x:tensor([10., 1., 3., 7., 6.]), batch_y:tensor([ 1., 10., 8., 4., 5.])
steop:1, batch_x:tensor([8., 5., 4., 9., 2.]), batch_y:tensor([3., 6., 7., 2., 9.])
steop:0, batch_x:tensor([ 9., 3., 10., 1., 5.]), batch_y:tensor([ 2., 8., 1., 10., 6.])
steop:1, batch_x:tensor([2., 6., 8., 4., 7.]), batch_y:tensor([9., 5., 3., 7., 4.])
steop:0, batch_x:tensor([ 2., 10., 9., 6., 1.]), batch_y:tensor([ 9., 1., 2., 5., 10.])
steop:1, batch_x:tensor([8., 3., 4., 7., 5.]), batch_y:tensor([3., 8., 7., 4., 6.])
說明:共有 10 條數據,設置 BATCH_SIZE 為 5 來進行劃分,能劃分為 2 組(steop 為 0 和 1)。這兩組數據互斥。
BATCH_SIZE 不整除數據量:會輸出余下所有數據
將上述代碼中的 BATCH_SIZE 改為 4 :
""" 批訓練,把數據變成一小批一小批數據進行訓練。 DataLoader就是用來包裝所使用的數據,每次拋出一批數據 """ import torch import torch.utils.data as Data BATCH_SIZE = 4 # 批訓練的數據個數 x = torch.linspace(1, 10, 10) # 訓練數據 print(x) y = torch.linspace(10, 1, 10) # 標簽 print(y) # 把數據放在數據庫中 torch_dataset = Data.TensorDataset(x, y) # 對給定的 tensor 數據,將他們包裝成 dataset loader = Data.DataLoader( # 從數據庫中每次抽出batch size個樣本 dataset=torch_dataset, # torch TensorDataset format batch_size=BATCH_SIZE, # mini batch size shuffle=True, # 要不要打亂數據 (打亂比較好) num_workers=2, # 多線程來讀數據 ) def show_batch(): for epoch in range(3): for step, (batch_x, batch_y) in enumerate(loader): # training print("steop:{}, batch_x:{}, batch_y:{}".format(step, batch_x, batch_y)) show_batch()
輸出結果:
tensor([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
tensor([10., 9., 8., 7., 6., 5., 4., 3., 2., 1.])
steop:0, batch_x:tensor([1., 5., 3., 2.]), batch_y:tensor([10., 6., 8., 9.])
steop:1, batch_x:tensor([7., 8., 4., 6.]), batch_y:tensor([4., 3., 7., 5.])
steop:2, batch_x:tensor([10., 9.]), batch_y:tensor([1., 2.])
steop:0, batch_x:tensor([ 7., 10., 5., 2.]), batch_y:tensor([4., 1., 6., 9.])
steop:1, batch_x:tensor([9., 1., 6., 4.]), batch_y:tensor([ 2., 10., 5., 7.])
steop:2, batch_x:tensor([8., 3.]), batch_y:tensor([3., 8.])
steop:0, batch_x:tensor([10., 3., 2., 8.]), batch_y:tensor([1., 8., 9., 3.])
steop:1, batch_x:tensor([1., 7., 5., 9.]), batch_y:tensor([10., 4., 6., 2.])
steop:2, batch_x:tensor([4., 6.]), batch_y:tensor([7., 5.])
說明:共有 10 條數據,設置 BATCH_SIZE 為 4 來進行劃分,能劃分為 3 組(steop 為 0 、1、2)。分別有 4、4、2 條數據。
到此,關于“PyTorch中torch.utils.data.DataLoader怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。