欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pytorch多進(jìn)程加速及代碼優(yōu)化方法

 更新時(shí)間:2019年08月19日 18:35:54   作者:兢兢業(yè)業(yè)小碼農(nóng)  
今天小編就為大家分享一篇pytorch多進(jìn)程加速及代碼優(yōu)化方法。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

目標(biāo):優(yōu)化代碼,利用多進(jìn)程,進(jìn)行近實(shí)時(shí)預(yù)處理、網(wǎng)絡(luò)預(yù)測(cè)及后處理:

本人嘗試了pytorch的multiprocessing,進(jìn)行多進(jìn)程同步處理以上任務(wù)。

from torch.multiprocessing import Pool,Manager

為了進(jìn)行各進(jìn)程間的通信,使用Queue,作為數(shù)據(jù)傳輸載體。

  manager = Manager()
  input_queue = manager.Queue()
  output_queue = manager.Queue()

  show_queue = manager.Queue()

即將預(yù)處理進(jìn)程處理后的圖像放進(jìn) input_queue,而網(wǎng)絡(luò)預(yù)測(cè)進(jìn)程實(shí)時(shí)獲取 input_queue隊(duì)列中的數(shù)據(jù),一旦放入,就從中取出,輸入網(wǎng)絡(luò):

while 1:

  input = input_queue.get()

同理,將網(wǎng)絡(luò)輸出放入output_queue,再由后處理進(jìn)程實(shí)時(shí)獲取并進(jìn)行后處理,處理后,放入show_queue

從而實(shí)現(xiàn)了多進(jìn)程同步進(jìn)行預(yù)處理、網(wǎng)絡(luò)預(yù)測(cè)及后處理,加速了網(wǎng)絡(luò)實(shí)時(shí)預(yù)測(cè)的表現(xiàn)。

問(wèn)題及解決方案:

1. pytorch cuda報(bào)錯(cuò),re-initialization報(bào)錯(cuò)問(wèn)題:

習(xí)慣了在一開(kāi)始將模型先加載進(jìn)來(lái)放入gpu中,所以模型在主線程就完成了初始化,但是調(diào)用網(wǎng)絡(luò)是在網(wǎng)絡(luò)預(yù)測(cè)子進(jìn)程進(jìn)行的,就會(huì)導(dǎo)致跨進(jìn)程重復(fù)初始化失敗。

解決方案:

直接在子進(jìn)程開(kāi)始時(shí)初始化,其他進(jìn)程可以設(shè)置個(gè)延時(shí),等網(wǎng)絡(luò)初始化好后再開(kāi)始運(yùn)行。

同理,數(shù)據(jù)輸入網(wǎng)絡(luò)也是同樣的在子進(jìn)程進(jìn)行。

2. python3多進(jìn)程編程,子進(jìn)程不報(bào)錯(cuò)問(wèn)題:

一開(kāi)始總是代碼運(yùn)行起來(lái)什么都不出現(xiàn),就開(kāi)始各種debug,但因?yàn)閜ython3中子進(jìn)程不報(bào)錯(cuò),出錯(cuò)了就卡在那里,就每次自己找bug很麻煩,所以就急需子進(jìn)程的報(bào)錯(cuò)信息。

解決方案:

用try except組合,來(lái)打印子進(jìn)程中某段程序錯(cuò)誤,如下:

      try:
        out = forward(input_img,model,1)
      except Exception as error:
        print(error)

3.進(jìn)程完全不運(yùn)行時(shí),考慮是否是輸入設(shè)置的問(wèn)題,即當(dāng)單變量輸入時(shí),后面要加都好,如:

pool.apply_async(load_frame,args=(input_queue,))

如果是pool.apply_async(load_frame,args=(input_queue))則該進(jìn)程不會(huì)啟動(dòng)運(yùn)行。

4. 一開(kāi)始想優(yōu)化cv2.resize,想用gpu下的tensor的resize_代替,但發(fā)現(xiàn)這種方式和numpy.resize一脈相承啊,根本不是我們想要的resize,如果是變大的話,這種resize會(huì)直接按順序填,然后剩下的就填0,實(shí)在是太草率了。。。

解決方案:還沒(méi)有很好的替代方案,只找了一下,cuda::resize,但是好像貌似沒(méi)有python接口,要是混合編程好像有點(diǎn)小題大做,得不償失了。如果各位有較好的方案,歡迎指點(diǎn)迷津。

以上這篇pytorch多進(jìn)程加速及代碼優(yōu)化方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Python編寫一個(gè)根據(jù)姓名測(cè)性別的小程序

    基于Python編寫一個(gè)根據(jù)姓名測(cè)性別的小程序

    這篇文章主要為大家介紹了如何利用Python編寫一款根據(jù)中文名能猜測(cè)性別的一款界面化的小程序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-03-03
  • python中NumPy的安裝與基本操作

    python中NumPy的安裝與基本操作

    Python雖然也提供了array模塊,但其只支持一維數(shù)組,不支持多維數(shù)組,也沒(méi)有各種運(yùn)算函數(shù),因而不適合數(shù)值運(yùn)算,NumPy的出現(xiàn)彌補(bǔ)了這些不足,這篇文章主要給大家介紹了關(guān)于python中NumPy的安裝與基本操作的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 淺述python中argsort()函數(shù)的實(shí)例用法

    淺述python中argsort()函數(shù)的實(shí)例用法

    本篇文章主要介紹了淺述python中argsort()函數(shù)的實(shí)例用法,詳細(xì)的介紹了argsort()函數(shù)的用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Python實(shí)現(xiàn)打印九九乘法表的不同方法總結(jié)

    Python實(shí)現(xiàn)打印九九乘法表的不同方法總結(jié)

    這篇文章主要為大家介紹了Python實(shí)現(xiàn)打印九九乘法表的幾種不同方法,文中的示例代碼講解詳細(xì),簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-11-11
  • Python圖片檢索之以圖搜圖

    Python圖片檢索之以圖搜圖

    由于很多論文里面的測(cè)試圖片沒(méi)有標(biāo)號(hào),就不能確定它們是Testset數(shù)據(jù)集中哪幾張圖片.為了能解決這個(gè)問(wèn)題,需要完成以圖片去搜索整個(gè)數(shù)據(jù)集文件目錄的任務(wù).本文有非常詳細(xì)的圖文示例,需要的朋友可以參考下
    2021-05-05
  • Python機(jī)器學(xué)習(xí)pytorch交叉熵?fù)p失函數(shù)的深刻理解

    Python機(jī)器學(xué)習(xí)pytorch交叉熵?fù)p失函數(shù)的深刻理解

    這篇文章主要為大家介紹了Python機(jī)器學(xué)習(xí)中對(duì)交叉熵?fù)p失函數(shù)的深刻理解,文中作出了詳細(xì)易懂的講解,有需要的朋友可以借鑒參考下希望能夠有所幫助
    2021-10-10
  • 使用pytorch搭建AlexNet操作(微調(diào)預(yù)訓(xùn)練模型及手動(dòng)搭建)

    使用pytorch搭建AlexNet操作(微調(diào)預(yù)訓(xùn)練模型及手動(dòng)搭建)

    今天小編就為大家分享一篇使用pytorch搭建AlexNet操作(微調(diào)預(yù)訓(xùn)練模型及手動(dòng)搭建),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Python3連接SQLServer、Oracle、MySql的方法

    Python3連接SQLServer、Oracle、MySql的方法

    這篇文章較詳細(xì)的給大家介紹了Python3連接SQLServer、Oracle、MySql的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-06-06
  • 詳解Python最長(zhǎng)公共子串和最長(zhǎng)公共子序列的實(shí)現(xiàn)

    詳解Python最長(zhǎng)公共子串和最長(zhǎng)公共子序列的實(shí)現(xiàn)

    這篇文章主要介紹了詳解Python最長(zhǎng)公共子串和最長(zhǎng)公共子序列的實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • python回歸分析邏輯斯蒂模型之多分類任務(wù)詳解

    python回歸分析邏輯斯蒂模型之多分類任務(wù)詳解

    這篇文章主要為大家介紹了python回歸分析邏輯斯蒂模型之多分類任務(wù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評(píng)論