五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

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

發(fā)布日期:2022-04-02 19:52 | 文章來源:CSDN

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

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

參數(shù)詳解:

1、每次dataloader加載數(shù)據(jù)時(shí):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時(shí)當(dāng)然優(yōu)先指定本輪要用的batch。

2、num_worker設(shè)置得大,好處是尋batch速度快,因?yàn)橄乱惠喌腷atch很可能在上一輪/上上一輪...迭代時(shí)已經(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,意味著每一輪迭代時(shí),dataloader不再有自主加載數(shù)據(jù)到RAM這一步驟(因?yàn)闆]有worker了),而是在RAM中找batch,找不到時(shí)再加載相應(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也同時(shí)會增加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)行會報(bào)錯:
 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),希望能給大家一個參考,也希望大家多多支持本站。

美國快速服務(wù)器

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部