最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytorch DataLoader的num_workers參數(shù)與設(shè)置大小詳解

 更新時間:2021年05月28日 09:06:30   作者:龍南希  
這篇文章主要介紹了pytorch DataLoader的num_workers參數(shù)與設(shè)置大小詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Q:在給Dataloader設(shè)置worker數(shù)量(num_worker)時,到底設(shè)置多少合適?這個worker到底怎么工作的?

    train_loader = torch.utils.data.DataLoader(train_dataset,
                                               batch_size=batch_size, shuffle=True,
                                               num_workers=4)

參數(shù)詳解:

1、每次dataloader加載數(shù)據(jù)時:dataloader一次性創(chuàng)建num_worker個worker,(也可以說dataloader一次性創(chuàng)建num_worker個工作進(jìn)程,worker也是普通的工作進(jìn)程),并用batch_sampler將指定batch分配給指定worker,worker將它負(fù)責(zé)的batch加載進(jìn)RAM。

然后,dataloader從RAM中找本輪迭代要用的batch,如果找到了,就使用。如果沒找到,就要num_worker個worker繼續(xù)加載batch到內(nèi)存,直到dataloader在RAM中找到目標(biāo)batch。一般情況下都是能找到的,因?yàn)閎atch_sampler指定batch時當(dāng)然優(yōu)先指定本輪要用的batch。

2、num_worker設(shè)置得大,好處是尋batch速度快,因?yàn)橄乱惠喌腷atch很可能在上一輪/上上一輪...迭代時已經(jīng)加載好了。壞處是內(nèi)存開銷大,也加重了CPU負(fù)擔(dān)(worker加載數(shù)據(jù)到RAM的進(jìn)程是CPU復(fù)制的嘛)。num_workers的經(jīng)驗(yàn)設(shè)置值是自己電腦/服務(wù)器的CPU核心數(shù),如果CPU很強(qiáng)、RAM也很充足,就可以設(shè)置得更大些。

3、如果num_worker設(shè)為0,意味著每一輪迭代時,dataloader不再有自主加載數(shù)據(jù)到RAM這一步驟(因?yàn)闆]有worker了),而是在RAM中找batch,找不到時再加載相應(yīng)的batch。缺點(diǎn)當(dāng)然是速度更慢。

設(shè)置大小建議:

1、Dataloader的num_worker設(shè)置多少才合適,這個問題是很難有一個推薦的值。有以下幾個建議:

2、num_workers=0表示只有主進(jìn)程去加載batch數(shù)據(jù),這個可能會是一個瓶頸。

3、num_workers = 1表示只有一個worker進(jìn)程用來加載batch數(shù)據(jù),而主進(jìn)程是不參與數(shù)據(jù)加載的。這樣速度也會很慢。

num_workers>0 表示只有指定數(shù)量的worker進(jìn)程去加載數(shù)據(jù),主進(jìn)程不參與。增加num_works也同時會增加cpu內(nèi)存的消耗。所以num_workers的值依賴于 batch size和機(jī)器性能。

4、一般開始是將num_workers設(shè)置為等于計(jì)算機(jī)上的CPU數(shù)量

5、最好的辦法是緩慢增加num_workers,直到訓(xùn)練速度不再提高,就停止增加num_workers的值。

補(bǔ)充:pytorch中Dataloader()中的num_workers設(shè)置問題

如果num_workers的值大于0,要在運(yùn)行的部分放進(jìn)__main__()函數(shù)里,才不會有錯:

import numpy as np
import torch
from torch.autograd import Variable
import torch.nn.functional
import matplotlib.pyplot as plt
import torch.utils.data as Data 
 
BATCH_SIZE=5
 
x=torch.linspace(1,10,10)
y=torch.linspace(10,1,10)
torch_dataset=Data.TensorDataset(x,y)
loader=Data.DataLoader(
    dataset=torch_dataset,
    batch_size=BATCH_SIZE,
    shuffle=True,
    num_workers=2,
) 
 
def main():
    for epoch in range(3):
        for step,(batch_x,batch_y) in enumerate(loader):
            # training....
            print('Epoch:',epoch,'| step:',step,'| batch x:',batch_x.numpy(),
                  '| batch y:',batch_y.numpy()) 
 
if __name__=="__main__":
    main() 
 
'''
# 下面這樣直接運(yùn)行會報錯:
 for epoch in range(3):
     for step,(batch_x,batch_y) in enumerate(loader):
         # training....
          print('Epoch:',epoch,'| step:',step,'| batch x:',batch_x.numpy(),
                  '| batch y:',batch_y.numpy()
'''

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Python分析文本數(shù)據(jù)的詞頻并詞云圖可視化

    使用Python分析文本數(shù)據(jù)的詞頻并詞云圖可視化

    這篇文章主要給大家介紹了關(guān)于如何使用Python分析文本數(shù)據(jù)的詞頻并詞云圖可視化,文章中有詳細(xì)的圖文介紹和代碼示例,對我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-09-09
  • 一文帶大家了解python中的換行以及轉(zhuǎn)義

    一文帶大家了解python中的換行以及轉(zhuǎn)義

    這篇文章主要為大家詳細(xì)介紹了python中的換行以及轉(zhuǎn)義的相關(guān)知識,文中的示例代碼講解詳細(xì),對我們深入了解python有一定的幫助,需要的小伙伴可以了解下
    2023-11-11
  • 使用Python制作一個簡易的遠(yuǎn)控終端

    使用Python制作一個簡易的遠(yuǎn)控終端

    這篇文章主要為大家詳細(xì)介紹了如何使用Python語言制作一個簡易的遠(yuǎn)控終端,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的可以了解一下
    2023-04-04
  • centos7之Python3.74安裝教程

    centos7之Python3.74安裝教程

    這篇文章主要介紹了centos7之Python3.74安裝教程,本文給大家介紹的非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-08-08
  • scrapy中如何設(shè)置應(yīng)用cookies的方法(3種)

    scrapy中如何設(shè)置應(yīng)用cookies的方法(3種)

    這篇文章主要介紹了scrapy中如何設(shè)置應(yīng)用cookies的方法(3種),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • python數(shù)學(xué)建模之三大模型與十大常用算法詳情

    python數(shù)學(xué)建模之三大模型與十大常用算法詳情

    這篇文章主要介紹了python數(shù)學(xué)建模之三大模型與十大常用算法詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感想取得小伙伴可以參考一下
    2022-07-07
  • 關(guān)于探究python中sys.argv時遇到的問題詳解

    關(guān)于探究python中sys.argv時遇到的問題詳解

    這篇文章主要給大家介紹了python里sys.argv時遇到問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • python一鍵去抖音視頻水印工具

    python一鍵去抖音視頻水印工具

    抖音越來越火,越刷越上癮,總感覺下一個視頻一定會更精彩,根本停不下來。想將抖音里喜歡的小哥哥/小姐姐的視頻全部存到電腦硬盤里,還沒有抖音的視頻水印,跟著小編來看看吧
    2018-09-09
  • Python數(shù)據(jù)可視化:箱線圖多種庫畫法

    Python數(shù)據(jù)可視化:箱線圖多種庫畫法

    這篇文章主要介紹了Python數(shù)據(jù)可視化箱線圖多種庫畫法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • Python對稱的二叉樹多種思路實(shí)現(xiàn)方法

    Python對稱的二叉樹多種思路實(shí)現(xiàn)方法

    這篇文章主要介紹了Python對稱的二叉樹多種思路實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02

最新評論

香格里拉县| 靖西县| 瓦房店市| 德惠市| 长汀县| 乃东县| 巫溪县| 昆山市| 板桥市| 长葛市| 荔波县| 梓潼县| 青州市| 澄迈县| 伊宁县| 榆树市| 个旧市| 金坛市| 皋兰县| 拜泉县| 咸丰县| 汾西县| 望江县| 上林县| 香港| 遂溪县| 河津市| 额济纳旗| 新邵县| 禹州市| 大竹县| 台东县| 平阳县| 珲春市| 潜江市| 通许县| 云和县| 漳浦县| 罗甸县| 卢湾区| 观塘区|