主頁 > 知識庫 > Pytorch dataloader在加載最后一個batch時卡死的解決

Pytorch dataloader在加載最后一個batch時卡死的解決

熱門標簽:開封語音外呼系統(tǒng)代理商 天津電話機器人公司 河北防封卡電銷卡 開封自動外呼系統(tǒng)怎么收費 地圖標注線上如何操作 電銷機器人的風險 手機網(wǎng)頁嵌入地圖標注位置 400電話辦理哪種 應電話機器人打電話違法嗎

問題:

自己寫了個dataloader,為了部署方便,用OpenCV的接口進行數(shù)據(jù)讀取,而沒有用PIL,代碼大致如下:

    def __getitem__(self, idx):
        sample = self.samples[idx]
 
        img = cv2.imread(sample[0])
        img = cv2.resize(img, tuple(self.input_size))
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        # if not self.val and random.randint(1, 10)  3:
        #     img = self.img_aug(img)
        img = Image.fromarray(img) 
        img = self.transforms(img)        
        ...

結(jié)果在訓練過程中,在第1個epoch的最后一個batch時,程序卡死。

解決方案:

可能是因為OpenCV與Pytorch互鎖的問題,關(guān)閉OpenCV的多線程,問題解決。

cv2.setNumThreads(0)
cv2.ocl.setUseOpenCL(False)

補充:pytorch 中一個batch的訓練過程

# 一般情況下
optimizer.zero_grad()             # 梯度清零
preds = model(inputs)             # inference,前向傳播求出預測值
loss = criterion(preds, targets)  # 計算loss
loss.backward()                   # 反向傳播求解梯度
optimizer.step()                  # 更新權(quán)重,更新網(wǎng)絡(luò)權(quán)重參數(shù)

此外,反向傳播前,如果不進行梯度清零,則可以實現(xiàn)梯度累加,從而一定程度上解決顯存受限的問題。

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

您可能感興趣的文章:
  • pytorch鎖死在dataloader(訓練時卡死)
  • pytorch Dataset,DataLoader產(chǎn)生自定義的訓練數(shù)據(jù)案例
  • 解決Pytorch dataloader時報錯每個tensor維度不一樣的問題
  • pytorch中DataLoader()過程中遇到的一些問題
  • Pytorch 如何加速Dataloader提升數(shù)據(jù)讀取速度
  • pytorch DataLoader的num_workers參數(shù)與設(shè)置大小詳解
  • pytorch 實現(xiàn)多個Dataloader同時訓練

標簽:江蘇 蘭州 駐馬店 六盤水 常州 成都 宿遷 山東

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Pytorch dataloader在加載最后一個batch時卡死的解決》,本文關(guān)鍵詞  Pytorch,dataloader,在,加載,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Pytorch dataloader在加載最后一個batch時卡死的解決》相關(guān)的同類信息!
  • 本頁收集關(guān)于Pytorch dataloader在加載最后一個batch時卡死的解決的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章