中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PyTorch中torch.utils.data.DataLoader怎么使用

發布時間:2022-06-22 13:39:21 來源:億速云 閱讀:163 作者:iii 欄目:開發技術

這篇文章主要介紹“PyTorch中torch.utils.data.DataLoader怎么使用”,在日常操作中,相信很多人在PyTorch中torch.utils.data.DataLoader怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PyTorch中torch.utils.data.DataLoader怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

一、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怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

甘德县| 库伦旗| 溧水县| 电白县| 枣阳市| 大城县| 清远市| 安图县| 潢川县| 孟连| 获嘉县| 墨玉县| 宁波市| 布拖县| 西藏| 喀什市| 洞头县| 胶州市| 湘潭市| 广东省| 浮梁县| 阿拉善右旗| 嘉鱼县| 乐清市| 广宗县| 通渭县| 修文县| 曲阜市| 新丰县| 阳泉市| 大邑县| 巴彦县| 县级市| 大悟县| 谢通门县| 蓝山县| 屯门区| 滁州市| 且末县| 福鼎市| 阳春市|