佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > 解決pytorch下出現(xiàn)multi-target not supported at的一種可能原因

解決pytorch下出現(xiàn)multi-target not supported at的一種可能原因

熱門(mén)標(biāo)簽:百度AI接口 電話運(yùn)營(yíng)中心 語(yǔ)音系統(tǒng) 企業(yè)做大做強(qiáng) 硅谷的囚徒呼叫中心 Win7旗艦版 呼叫中心市場(chǎng)需求 客戶服務(wù)

在使用交叉熵?fù)p失函數(shù)的時(shí)候,target的形狀應(yīng)該是和label的形狀一致或者是只有batchsize這一個(gè)維度的。

如果target是這樣的【batchszie,1】就會(huì)出現(xiàn)上述的錯(cuò)誤。

改一下試試,用squeeze()函數(shù)降低緯度,

如果不知道squeeze怎么用的,

可以參考這篇文章。pytorch下的unsqueeze和squeeze用法

這只是一種可能的原因。

補(bǔ)充:pytorch使用中遇到的問(wèn)題

1. load模型參數(shù)文件時(shí),提示torch.cuda.is_available() is False。

按照pytorch官方網(wǎng)頁(yè)又安裝了一次pytorch,而不是直接使用清華源,執(zhí)行pip install torch,暫時(shí)不知道為什么。

2. 使用CrossEntropyLoss時(shí),要求第一個(gè)參數(shù)為網(wǎng)絡(luò)輸出值,F(xiàn)loatTensor類型,第二個(gè)參數(shù)為目標(biāo)值,LongTensor類型。否則

需要在數(shù)據(jù)讀取的迭代其中把target的類型轉(zhuǎn)換為int64位的:target = target.astype(np.int64),這樣,輸出的target類型為torch.cuda.LongTensor。(或者在使用前使用Tensor.type(torch.LongTensor)進(jìn)行轉(zhuǎn)換)。

3.

RuntimeError: multi-target not supported at /pytorch/torch/lib/THCUNN/generic/ClassNLLCriterion.cu
loss += F.cross_entropy( scores, captions )

出錯(cuò)原因:

scores, captions的維度與F.cross_entropy()函數(shù)要求的維度不匹配,

例如出錯(cuò)的維度為scores=[batch, vocab_size], captions=[batch, 1]

解決:

loss += F.cross_entropy( scores, captions.squeeze() )

注,這個(gè)scores必須是N*C維,C指類別數(shù)。

4. pytorch訓(xùn)練過(guò)程中使用大量的CPU資源

當(dāng)我使用pycharm運(yùn)行 (https://github.com/Joyce94/cnn-text-classification-pytorch ) pytorch程序的時(shí)候,在Linux服務(wù)器上會(huì)開(kāi)啟多個(gè)進(jìn)程,占用服務(wù)器的大量的CPU,在windows10上運(yùn)行此程序的時(shí)候,本機(jī)的CPU和內(nèi)存會(huì)被吃光,是因?yàn)樵趖rain.py中有大量的數(shù)據(jù)訓(xùn)練處理,會(huì)開(kāi)啟多個(gè)進(jìn)程,占用大量的CPU和進(jìn)程。

本機(jī)window10

linux服務(wù)器開(kāi)啟了多個(gè)進(jìn)程

Linux服務(wù)器占用大量CPU

在pytorch中提供了(http://pytorch.org/docs/master/multiprocessing.html)muliprocessing多進(jìn)程管理,其中有Pool進(jìn)程池、Process()等對(duì)進(jìn)程進(jìn)行管理,可能是我使用的方式不對(duì),反正是沒(méi)有什么效果。

然而最簡(jiǎn)單的也是最好的解決辦法 :

torch.set_num_threads(int thread) ,可以很好的解決windows問(wèn)題,參考(http://pytorch.org/docs/master/torch.html#parallelism) 然而,在linux服務(wù)器上還是有一些問(wèn)題的,export OMP_NUM_THREADS = 1 可以解決Linux問(wèn)題。

經(jīng)驗(yàn)證:export OMP_NUM_THREADS=1確實(shí)在pycaffe/pytorch中可以有效降低CPU使用率且提高程序運(yùn)行速度,考慮可能是程序并不需要這么大的計(jì)算量,但是開(kāi)了很多線程并行進(jìn)行相同的計(jì)算,最后還需要同步結(jié)果,浪費(fèi)了大量的計(jì)算量。

5. 在pytorch框架下編譯模塊的時(shí)候遇到 in module>

raise ImportError("torch.utils.ffi is deprecated. Please use cpp extensions instead.")
ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead.

解決:pytorch版本與其他庫(kù)的版本不匹配。我當(dāng)時(shí)裝的是1.0.0,降低版本到0.4.0后問(wèn)題解決。

6.pytorch設(shè)置GPU,os.environ['CUDA_VISIBLE_DEVICES']='X'要放在主程序的最前端,否則設(shè)置GPU可能無(wú)效。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • pytorch下的unsqueeze和squeeze的用法說(shuō)明
  • anaconda安裝pytorch1.7.1和torchvision0.8.2的方法(親測(cè)可用)
  • Pytorch 圖像變換函數(shù)集合小結(jié)
  • 教你一分鐘在win10終端成功安裝Pytorch的方法步驟
  • 詳解win10下pytorch-gpu安裝以及CUDA詳細(xì)安裝過(guò)程
  • pytorch中index_select()的用法詳解

標(biāo)簽:山西 喀什 長(zhǎng)沙 海南 濟(jì)南 安康 崇左 山西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《解決pytorch下出現(xiàn)multi-target not supported at的一種可能原因》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    新竹市| 皮山县| 宝清县| 浠水县| 郁南县| 渝中区| 甘洛县| 南乐县| 万荣县| 阳城县| 罗山县| 金华市| 铁岭县| 宁陕县| 徐汇区| 如东县| 武强县| 正蓝旗| 收藏| 原阳县| 韩城市| 静乐县| 颍上县| 贵溪市| 洛隆县| 广汉市| 合川市| 高州市| 确山县| 若羌县| 白水县| 高密市| 肇东市| 博客| 永善县| 河间市| 岳普湖县| 昭平县| 军事| 临江市| 垦利县|