pytorch對梯度進行視覺化進行梯度檢查教程

2022-09-26 19:30:37 字數 971 閱讀 7976

目的: 在訓練神經網路的時候,有時候需要自己寫操作,比如faster_rcnn中的roi_pooling,我們可以視覺化前向傳播的影象和反向傳播的梯度影象,前向傳播可以檢查流程和計算的正確性,而反向傳播則可以大概檢查流程的正確性。

實驗視覺化rroi_align的梯度

1.pytorch 0.4.1及之前,需要宣告需要引數,這裡將資料宣告為variable

im_dat = jnkxfvariablwww.cppcns.come(im_data, requires_grad=true)

2.進行前向傳播,最後的loss對映為乙個一維的張量

pooled_feat = roipool(im_data, rois.view(-1, 6))

res = pooled_feat.pow(2).sum()

res.backward()

3.注意求loss的時候採用更加複雜,或者更多的運算(這樣在梯度視覺化的時候效果才更加明顯)

視覺化效果

原始梯度視覺化

原圖+梯度圖

小結:可以看到誤差梯度的位置是正確的,程式設計客棧誤差是否正確,需要其他方式驗證(暫時沒有思路)

可以看到上面在求loss的時候為:loss = sum(x2),但是如果換成:loss = mean(x),效果就沒有上面明顯。

實驗二的效果

loss = mean(x)

可以看到根本無法看到誤差梯度的位置資訊

實驗三:loss = sum(x)

小結: 可以看到位置資訊有差別,比如國徽部分,這會讓人以為,國徽部分只利用了左部分的資訊,或者自己手寫的操作誤差索引不對

可以通過兩種方式進行驗證

1.用更多,更複雜的運算求loss,比如pow,等

2.用matplotlib顯示後,用滑鼠可以指示每個點的具體的值,可以檢測有誤差梯度區域是否和無誤差梯度區域有差別。

本文標題: pytorch對梯度進行視覺化進行梯度檢查教程

本文位址:

pytorch 使用visdom進行視覺化

相比tensorbordx,visdom重新整理更快,介面體驗也良好,首先是visdom的安裝,與普通的python庫一樣,直接pip install visdom即可 成功安裝後,在控制台下輸入python m visdom.server 複製http localhost 8097,輸入瀏覽器即可...

PyTorch 視覺化特徵

這個也可以參考 這篇部落格主要記錄了如何提取特定層的特徵,然後對它進行視覺化 處理單張作為網路輸入。根據給定的layer層,獲取該層的輸出結果features。考慮到features的形狀為 batch size,filter nums,h,w 提取其中的第乙個過濾器得到的結果feature。以一張...

pytorch模型視覺化

先把tensorflow和pytorch安裝好 之後在pytorch環境裡 pip install tensorboardx 將with summarywriter comment lenet as w w.add graph model,varinput,新增到模型和輸入的後面,類似這樣注意引數第...