如何從PyTorch中獲取過(guò)程特征圖實(shí)例詳解
一、獲取Tensor
神經(jīng)網(wǎng)絡(luò)在運(yùn)算過(guò)程中實(shí)際上是以Tensor為格式進(jìn)行計(jì)算的,我們只需稍稍改動(dòng)一下forward函數(shù)即可從運(yùn)算過(guò)程中抓到Tensor
代碼如下:
base_feature = self.extractor.forward(x) #正常的前向傳遞 feature=base_feature.detach() #抓取tensor feature_imshow(feature) #展示函數(shù)(關(guān)鍵代碼)
通過(guò)將過(guò)程張量賦值給一個(gè)臨時(shí)變量,即可將其從前向傳遞中分離出來(lái)且不影響原來(lái)的前向傳遞函數(shù),這種方法遠(yuǎn)比復(fù)雜的hook函數(shù)更實(shí)用。
將Tensor數(shù)據(jù)取到后到可視化還需要進(jìn)行以下幾步:
①類型轉(zhuǎn)換
如果網(wǎng)絡(luò)是在cuda中進(jìn)行運(yùn)算,則需要將提取到的tensor轉(zhuǎn)換為cpu類型才能進(jìn)行接下來(lái)的運(yùn)算
inp = inp.cpu() #類型轉(zhuǎn)換
②張量拆解
網(wǎng)絡(luò)中的張量一般是高維度的,需要對(duì)其進(jìn)行降維,一般降至兩維即可進(jìn)行顯示。這里以Faster R-CNN中的resnet50特征提取網(wǎng)絡(luò)為例:輸出其特征圖尺寸為:[1,1024,68,38],可以很明顯的看出,第一維實(shí)際上是batch_size,在圖像顯示中不需要,可以直接去除;第二維1024則是網(wǎng)絡(luò)提取到的特征圖張數(shù),故可以對(duì)第二維進(jìn)行遍歷;而第3,4維是特征圖的尺寸,直接顯示即可。
inp=inp.squeeze(0) #除去第一維
for i in range(len(inp)):
plt.imshow(transforms.ToPILImage()(inp[i])) #遍歷第二維并將其轉(zhuǎn)換為圖像③圖像展示
選取你需要的特征圖像,進(jìn)行保存或使用plt進(jìn)展示
完整的展示函數(shù)如下:
def feature_imshow(inp, title=None):
inp = inp.cpu()
inp=inp.squeeze(0)
print(inp.shape)
plt.figure(figsize=(12, 7))
for i in range(len(inp)):
plt.subplot(4, 5, i+1) #第一二個(gè)參數(shù)為圖像個(gè)數(shù),第三參數(shù)為圖像位置
plt.imshow(transforms.ToPILImage()(inp[i]))
i+=1
plt.show()
plt.pause(0.001)
總結(jié)
到此這篇關(guān)于如何從PyTorch中獲取過(guò)程特征圖的文章就介紹到這了,更多相關(guān)PyTorch獲取過(guò)程特征圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python用分?jǐn)?shù)表示矩陣的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于python如何利用分?jǐn)?shù)表示矩陣的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
pd.read_csv讀取文件路徑出現(xiàn)的問(wèn)題解決
本文主要介紹了pd.read_csv讀取文件路徑出現(xiàn)的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
pytorch之關(guān)于PyTorch結(jié)構(gòu)介紹
這篇文章主要介紹了pytorch之關(guān)于PyTorch結(jié)構(gòu)的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09

