您好,登錄后才能下訂單哦!
這篇文章主要介紹了pytorch對梯度進行可視化進行梯度檢查的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
目的: 在訓練神經網絡的時候,有時候需要自己寫操作,比如faster_rcnn中的roi_pooling,我們可以可視化前向傳播的圖像和反向傳播的梯度圖像,前向傳播可以檢查流程和計算的正確性,而反向傳播則可以大概檢查流程的正確性。
實驗
可視化rroi_align的梯度
1.pytorch 0.4.1及之前,需要聲明需要參數,這里將圖片數據聲明為variable
im_data = Variable(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對梯度進行可視化進行梯度檢查的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。