使用pytorch時所遇到的問題總結

2022-02-05 17:03:52 字數 2635 閱讀 6688

使用pytorch時所遇到的問題總結

1、ubuntu vscode切換虛擬環境

在ubuntu系統上,配置工作區資料夾所使用的虛擬環境。之前筆者誤以為只需要在vscode內建的終端上將虛擬環境切換過來即可,後來發現得通過配置vscode的直譯器(interpreter)具體方法如下:

選中需要配置的資料夾,然後點選vscode左下角的寫有「python ***」的位置(或者使用快捷鍵「ctrl+shift+p」)--》選擇資料夾--》從直譯器列表中選擇要用的直譯器。完成設定後,會在資料夾下面多出乙個名為「.vscode」的資料夾,其中會多出乙個名為「settings.json」的檔案,經過設定後該檔案內會多出乙個條目來指向虛擬環境中的python的路徑,例如:python.pythonpath:"/home/lh/anaconda3/envs/pytorch/bin/python"。

2、使用dataloader時報錯:raise runtimeerror('already started')

出錯位置在使用dataloader時,將引數「num_workers」設定為大於0的值了,推測原因是沒有開啟多執行緒功能,解決方法為將num_workers設定為0。如果需要要使用多個子執行緒來載入資料,那麼就需要讓主程式在「if __name__ = 'main'"中執行。

3、pytorch中使用tensorboard

問題(1): import error:tensorboard logging requires tensorboard with python summary writer installed

這是由於當前的環境中沒有安裝tensorboard。如果電腦上安裝有anaconda,那麼直接使用命令「conda install tensorboard」即可。

問題(2):調出tensorboard介面

當在程式中呼叫summarywriter之後,在控制台中會給出如下資訊:

其中需要注意的是「--port 41889」。然後我們在控制台中輸入命令「tensorboard --logdir='log' --port=41889」,--logdir用來指向之前所指定的日誌目錄,--port就是之前控制台中給出的埠號。輸入指令後,控制台中會給出乙個**,開啟該**就可以在瀏覽器中開啟tensorboard介面了。

4、pytorch使用dataloader時,報出「typeerror:default_collect:batch must contain tensors, numpy arrays, numbers,dicts or lists; found 」

這是因為在建立torchvision.dataset物件的時候沒有將資料庫內的影象轉為torch張量,在建立資料庫物件的時候將引數transform進行如下設定就可以了:transform=transform.totensor()。

5、runtimeerror:input type (torch.floattensor) and weight type (torch.cuda.floattensor) should be the same

這是由於傳入模型的資料是放在cpu記憶體中的,而模型本身被放置在gpu記憶體中了。因此只需要將輸入的資料放置到gpu記憶體中就可以解決問該問題了。

6、pytorch,同名函式後面加乙個'_',例如:'clamp()'與'clamp_()'

一般來說,如果函式後帶了乙個下劃線,就意味著在改變當前張量的值的同時返回乙個修改後的副本;如果不帶下劃線,那麼就只返回修改後的副本,而不改變原來張量的值。例如:

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))

結果為如下圖,可見張量a在呼叫clamp_函式後其本身的值也會發生改變,但是呼叫clamp的時候則只會返回乙個修改後的副本。

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

『(1)』這種寫法得到的是乙個int型別的資料,而『(1, )』得到的是乙個turple型別的資料。驗證如下:

8、tqdm進度條

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

使用pytorch時遇到的問題彙總 二

情況分為兩種 情況一 解決 model.load state dict checkpoint,false 這個部分的作用是判斷上面引數拷貝過程中是否有unexpected keys或者missing keys,如果有就報錯,不能繼續執行。當然,如果strict false,則會忽略這些細節。情況二 ...

Android studio打包所遇到的問題

android studio的打包步驟,我就不講了。網上一大堆,一搜就出來了。我先講一下我所遇到的問題 我打包好後,想要安裝到手機上,結果安卓7.0的能安裝以下的好像都不能安裝。有乙個華為手機報了數字簽名的錯誤,但我已經加了keystone。網上搜了一下說有meta inf的就是已經有簽名的,我看了...

飛機大戰專案 使用pycharm時遇到的問題

今日想練習下飛機大戰的專案.在ubuntu系統上安裝了乙個pycharm.file settings editor font 即可調節字型大小 file settings 選擇專案projects project interpreter 選擇已存在的python直譯器 的安裝路徑 是因為預設了vim...