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

解決pytorch?model代碼內(nèi)tensor?device不一致的問(wèn)題

 更新時(shí)間:2023年07月04日 16:34:38   作者:_LvP  
這篇文章主要介紹了pytorch?model代碼內(nèi)tensor?device不一致的問(wèn)題,本文給大家分享完美解決方案,對(duì)pytorch?tensor?device不一致問(wèn)題解決方案感興趣的朋友跟隨小編一起看看吧

pytorch model代碼內(nèi)tensor device不一致的問(wèn)題

在編寫(xiě)一段處理兩個(gè)tensor的代碼如下,需要在forward函數(shù)內(nèi)編寫(xiě)函數(shù)創(chuàng)建一個(gè)新的tensor進(jìn)行索引的掩碼計(jì)算

# todo(liang)空間交換
def compute_sim_and_swap(t1, t2, threshold=0.7):
     n, c, h, w = t1.shape
     sim = torch.nn.functional.cosine_similarity(t1, t2, dim=1) # n, h, w
     sim = sim.unsqueeze(0) # c, n, h, w
     expand_tensor = sim.clone()
     # 使用拼接構(gòu)建相同的維度
     for _ in range(c-1): # c, n, h, w
         sim = torch.cat([sim, expand_tensor], dim=0)
     sim = sim.permute(1, 0, 2, 3) # n, c, h, w
     # 創(chuàng)建邏輯掩碼,小于 threshold 的將掩碼變?yōu)?True 用于交換
     mask = sim < threshold
     indices = torch.rand(mask.shape) < 0.5
     t1[mask&indices], t2[mask&indices] = t2[mask&indices], t1[mask&indices]
     return t1, t2

這段代碼報(bào)了這個(gè)錯(cuò)誤

File "xxx/network.py", line 347, in compute_sim_and_swap
t1[mask&indices], t2[mask&indices] = t2[mask&indices], t1[mask&indices]
RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!

統(tǒng)一下進(jìn)行掩碼計(jì)算的張量的設(shè)備即可

device = mask.Device
indices = indices.to(device)

PyTorch 多GPU使用torch.nn.DataParallel訓(xùn)練參數(shù)不一致問(wèn)題

在多GPU訓(xùn)練時(shí),遇到了下述的錯(cuò)誤:

1. Expected tensor for argument  1 'input' to have the same device as tensor for argument  2 'weight'; but device 0 does not equal 1 
2. RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:1 and cuda:0!

造成這個(gè)錯(cuò)誤的可能性有挺多,總起來(lái)是模型、輸入、模型內(nèi)參數(shù)不在一個(gè)GPU上。本人是在調(diào)試RandLA-Net pytorch源碼,希望使用雙GPU訓(xùn)練,經(jīng)過(guò)嘗試解決這個(gè)問(wèn)題,此處做一個(gè)記錄,希望給后來(lái)人一個(gè)提醒。經(jīng)過(guò)調(diào)試,發(fā)現(xiàn)報(bào)錯(cuò)的地方主要是在數(shù)據(jù)拼接的時(shí)候,即一個(gè)數(shù)據(jù)在GPU0上,一個(gè)數(shù)據(jù)在GPU1上,這就會(huì)出現(xiàn)錯(cuò)誤,相關(guān)代碼如下:

return torch.cat((
            self.mlp(concat),
            features.expand(B, -1, N, K)
        ), dim=-3)

上述代碼中,必須保證self.mlp(concat)與features.expand(B, -1, N, K)在同一個(gè)GPU中。在多GPU運(yùn)算時(shí),features(此時(shí)是輸入變量)有可能放在任何一個(gè)GPU中,因此此處在拼接前,獲取一下features的GPU,然后將concat放入相應(yīng)的GPU中,再進(jìn)行數(shù)據(jù)拼接就可以了,代碼如下:

device = features.device
concat = concat.to(device)
return torch.cat((
            self.mlp(concat),
            features.expand(B, -1, N, K)
        ), dim=-3)

該源碼中默認(rèn)狀態(tài)下device是一個(gè)固定的值,在多GPU訓(xùn)練狀態(tài)下就會(huì)報(bào)錯(cuò),代碼中還有幾處數(shù)據(jù)融合,大家可以依據(jù)上述思路做修改。此外該源碼中由于把device的值寫(xiě)死了,訓(xùn)練好的模型也必須在相應(yīng)的GPU中做推理,如在cuda0中訓(xùn)練的模型如果在cuda1中推理就會(huì)報(bào)錯(cuò),各位可以依據(jù)此思路對(duì)源碼做相應(yīng)的修改。如果修改有困難,可以私信我,我可以把相關(guān)修改后的源碼分享。

到此這篇關(guān)于pytorch model代碼內(nèi)tensor device不一致的問(wèn)題的文章就介紹到這了,更多相關(guān)pytorch tensor device不一致內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)與redis交互操作詳解

    python實(shí)現(xiàn)與redis交互操作詳解

    這篇文章主要介紹了python實(shí)現(xiàn)與redis交互操作,結(jié)合實(shí)例形式分析了Python Redis模塊的安裝、導(dǎo)入、連接與簡(jiǎn)單操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2020-04-04
  • 提高python代碼可讀性利器pycodestyle使用詳解

    提高python代碼可讀性利器pycodestyle使用詳解

    鑒于 Python 在數(shù)據(jù)科學(xué)中的流行,我將深入研究 pycodestyle 的使用方法,以提高 Python 代碼的質(zhì)量和可讀性。如果你想提升代碼質(zhì)量,歡迎收藏學(xué)習(xí),有所收獲,點(diǎn)贊支持
    2021-11-11
  • python字符串對(duì)其居中顯示的方法

    python字符串對(duì)其居中顯示的方法

    這篇文章主要介紹了python字符串對(duì)其居中顯示的方法,涉及Python打印輸出顯示的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • 兩個(gè)很實(shí)用的Python裝飾器詳解

    兩個(gè)很實(shí)用的Python裝飾器詳解

    這篇文章主要為大家介紹了Python的裝飾器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助,希望能夠給你帶來(lái)幫助
    2021-11-11
  • Python?pandas找出、刪除重復(fù)的數(shù)據(jù)實(shí)例

    Python?pandas找出、刪除重復(fù)的數(shù)據(jù)實(shí)例

    在面試中很可能遇到給定一個(gè)含有重復(fù)元素的列表,刪除其中重復(fù)的元素,下面這篇文章主要給大家介紹了關(guān)于Python?pandas找出、刪除重復(fù)數(shù)據(jù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • python 對(duì)dataframe下面的值進(jìn)行大規(guī)模賦值方法

    python 對(duì)dataframe下面的值進(jìn)行大規(guī)模賦值方法

    今天小編就為大家分享一篇python 對(duì)dataframe下面的值進(jìn)行大規(guī)模賦值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Python操作多維數(shù)組輸出和矩陣運(yùn)算示例

    Python操作多維數(shù)組輸出和矩陣運(yùn)算示例

    這篇文章主要介紹了Python操作多維數(shù)組輸出和矩陣運(yùn)算,結(jié)合實(shí)例形式分析了Python多維數(shù)組的生成、打印輸出及矩陣運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • python2和python3的輸入和輸出區(qū)別介紹

    python2和python3的輸入和輸出區(qū)別介紹

    這篇文章主要介紹了python2和python3的輸入和輸出區(qū)別介紹,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • Python通過(guò)DOM和SAX方式解析XML的應(yīng)用實(shí)例分享

    Python通過(guò)DOM和SAX方式解析XML的應(yīng)用實(shí)例分享

    這篇文章主要介紹了Python通過(guò)DOM和SAX方式解析XML的應(yīng)用實(shí)例分享,針對(duì)這兩種解析方式Python都有相關(guān)的模塊可供使用,需要的朋友可以參考下
    2015-11-11
  • Python增強(qiáng)下git那長(zhǎng)長(zhǎng)的指令詳解

    Python增強(qiáng)下git那長(zhǎng)長(zhǎng)的指令詳解

    這篇文章主要介紹了Python增強(qiáng)下git那長(zhǎng)長(zhǎng)的指令 ,在開(kāi)發(fā)中用到的代碼目錄結(jié)構(gòu),本文也給大家詳細(xì)講解,需要的朋友可以參考下
    2021-09-09

最新評(píng)論

孟州市| 铜陵市| 道真| 灵宝市| 类乌齐县| 青冈县| 大方县| 林口县| 铜山县| 西城区| 莱州市| 大英县| 和平区| 醴陵市| 福清市| 岢岚县| 江阴市| 郧西县| 阿克苏市| 莱阳市| 栾川县| 涿州市| 西丰县| 汝阳县| 谷城县| 志丹县| 六枝特区| 江孜县| 阜阳市| 六安市| 建德市| 顺昌县| 依安县| 和平县| 若羌县| 梅河口市| 久治县| 定兴县| 贵德县| 台湾省| 平顺县|