濮阳杆衣贸易有限公司

主頁 > 知識庫 > 使用pytorch時所遇到的一些問題總結(jié)

使用pytorch時所遇到的一些問題總結(jié)

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

使用pytorch時所遇到的問題總結(jié)

1、ubuntu vscode切換虛擬環(huán)境

在ubuntu系統(tǒng)上,配置工作區(qū)文件夾所使用的虛擬環(huán)境。之前筆者誤以為只需要在vscode內(nèi)置的終端上將虛擬環(huán)境切換過來即可,后來發(fā)現(xiàn)得通過配置vscode的解釋器(interpreter)

具體方法如下:

選中需要配置的文件夾,然后點擊vscode左下角的寫有“Python ***”的位置(或者使用快捷鍵“ctrl+shift+p”)--》選擇文件夾--》從解釋器列表中選擇要用的解釋器。

完成設(shè)置后,會在文件夾下面多出一個名為“.vscode”的文件夾,其中會多出一個名為“settings.json”的文件,經(jīng)過設(shè)置后該文件內(nèi)會多出一個條目來指向虛擬環(huán)境中的python的路徑,

例如:

python.pythonPath:"/home/lh/anaconda3/envs/pytorch/bin/python"

2、使用DataLoader時報錯:

raise RuntimeError('already started')

出錯位置在使用DataLoader時,將參數(shù)“num_workers”設(shè)置為大于0的值了,推測原因是沒有打開多線程功能,解決方法為將num_workers設(shè)置為0。

如果需要要使用多個子線程來加載數(shù)據(jù),那么就需要讓主程序在“if __name__ = 'main'"中運行。

3、pytorch中使用TensorBoard

問題(1):

Import Error:TensorBoard logging requires TensorBoard with Python summary writer installed

這是由于當前的環(huán)境中沒有安裝TensorBoard。如果電腦上安裝有anaconda,那么直接使用命令“conda install tensorboard”即可。

問題(2):調(diào)出tensorboard界面

當在程序中調(diào)用SummaryWriter之后,在控制臺中會給出如下信息:

其中需要注意的是“--port 41889”。然后我們在控制臺中輸入命令“tensorboard --logdir='log' --port=41889”,--logdir用來指向之前所指定的日志目錄,--port就是之前控制臺中給出的端口號。輸入指令后,控制臺中會給出一個網(wǎng)址,打開該網(wǎng)址就可以在瀏覽器中打開tensorboard界面了。

4、pytorch使用dataloader時,

報出“TypeError:default_collect:batch must contain tensors, numpy arrays, numbers,dicts or lists; found class 'PIL.Image.Image'>”

這是因為在創(chuàng)建torchvision.Dataset對象的時候沒有將數(shù)據(jù)庫內(nèi)的圖像轉(zhuǎn)為torch張量,在創(chuàng)建數(shù)據(jù)庫對象的時候?qū)?shù)transform進行如下設(shè)置就可以了:transform=transform.ToTensor()。

5、報錯

RuntimeError:Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the same

這是由于傳入模型的數(shù)據(jù)是放在CPU內(nèi)存中的,而模型本身被放置在GPU內(nèi)存中了。因此只需要將輸入的數(shù)據(jù)放置到GPU內(nèi)存中就可以解決問該問題了。

6、pytorch,同名函數(shù)后面加一個'_',例如:'clamp()'與'clamp_()'

一般來說,如果函數(shù)后帶了一個下劃線,就意味著在改變當前張量的值的同時返回一個修改后的副本;如果不帶下劃線,那么就只返回修改后的副本,而不改變原來張量的值。

例如:

import torch
a=torch.rand(3)
print('a:{}'.format(a))
print("clamp效果:")
b=a.clamp(0, 0.5)
print('b:{}'.format(b))
print('a:{}'.format(a))
print("clamp_效果:")
b=a.clamp_(0, 0.5)
print('b:{}'.format(b))
print('a:{}'.format(a))

結(jié)果為如下圖,可見張量a在調(diào)用clamp_函數(shù)后其本身的值也會發(fā)生改變,但是調(diào)用clamp的時候則只會返回一個修改后的副本。

7、python中(1)與(1,)的區(qū)別

‘(1)'這種寫法得到的是一個int類型的數(shù)據(jù),而‘(1, )'得到的是一個turple類型的數(shù)據(jù)。驗證如下:

8、tqdm進度條

tqdm.update()所傳入的參數(shù)指的是進度條前進的步長,而不是當前進度。

補充:Pytorch中常見的報錯解決方案

本文用于記錄所在pytorch所遇到過的運行時錯誤,持續(xù)更新。

1、變量所在設(shè)備(CPU,GPU)不一致問題

RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same

可能原因:現(xiàn)在假設(shè)代碼要在GPU上運行,并且你已經(jīng)進行my_model.to(device)操作了。注意只有my_model中的屬性(也就是self.開頭的變量)才會進行.to(device)。如果出現(xiàn)這個錯誤,可能是有的中間變量需要手動再顯式地.to(device)一下~

2、在Conv2d中padding或stride的參數(shù)個數(shù)錯誤的問題

RuntimeError: expected padding to be a single integer value or a list of 1 values to match the convolution dimensions, but got padding=[0, 0]

原因一:

對于一張二維圖片來說,它的padding也是二維的,即橫、縱方向上都需要設(shè)置padding(當然這兩個數(shù)字一般是一樣的)。現(xiàn)在為什么提示我們padding應(yīng)該是一維的呢?一定是輸入數(shù)據(jù)維度不對。

原因二:

上面說的是最可能的情況,如果你發(fā)現(xiàn)圖片已經(jīng)是四維的卻還有這個報錯,請檢查你Conv2d()的輸入?yún)?shù)。

例如,如果你把stride設(shè)置為一維的[3]而不是二維3(注意3會被自動處理成[3, 3]),同時padding為二維的0。

pytorch發(fā)現(xiàn)stride是一維的,而padding卻是二維的,就會報錯。

3、inplace operation問題

one of the variables needed for gradient computation has been modified by an inplace operationone of the variables needed for gradient computation has been modified by an inplace operation

inplace操作可能會使得backward無法進行(因為當前Tensor可能會在另一個地方被用到),比如forward出現(xiàn)了如下代碼:

x += y

你可能需要該成:

x = x + y

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

您可能感興趣的文章:
  • Pytorch高階OP操作where,gather原理
  • Pytorch中的gather使用方法
  • 淺談Pytorch中的torch.gather函數(shù)的含義
  • Pytorch深度學(xué)習(xí)gather一些使用問題解決方案

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

巨人網(wǎng)絡(luò)通訊聲明:本文標題《使用pytorch時所遇到的一些問題總結(jié)》,本文關(guān)鍵詞  使用,pytorch,時所,遇到,的,;如發(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時所遇到的一些問題總結(jié)》相關(guān)的同類信息!
  • 本頁收集關(guān)于使用pytorch時所遇到的一些問題總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    城步| 衡阳县| 合江县| 滕州市| 苗栗县| 基隆市| 清河县| 井冈山市| 衡阳市| 枣庄市| 常山县| 蒙城县| 托克逊县| 汕头市| 长岛县| 叶城县| 高唐县| 延川县| 鄂尔多斯市| 江阴市| 盐城市| 吉木萨尔县| 福安市| 盐源县| 新津县| 历史| 沙雅县| 中牟县| 皋兰县| 吴江市| 安陆市| 神木县| 同仁县| 龙州县| 壤塘县| 宾阳县| 绥阳县| 大连市| 永胜县| 缙云县| 治县。|