目的: 在訓練神經網路的時候,有時候需要自己寫操作,比如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,新增到模型和輸入的後面,類似這樣注意引數第...