pytorch對梯度進行可視化進行梯度檢查教程
目的: 在訓(xùn)練神經(jīng)網(wǎng)絡(luò)的時候,有時候需要自己寫操作,比如faster_rcnn中的roi_pooling,我們可以可視化前向傳播的圖像和反向傳播的梯度圖像,前向傳播可以檢查流程和計算的正確性,而反向傳播則可以大概檢查流程的正確性。
實驗
可視化rroi_align的梯度
1.pytorch 0.4.1及之前,需要聲明需要參數(shù),這里將圖片數(shù)據(jù)聲明為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的時候采用更加復(fù)雜,或者更多的運算(這樣在梯度可視化的時候效果才更加明顯)
可視化效果
原始圖片

梯度可視化圖片

原圖+梯度圖

小結(jié):
可以看到誤差梯度的位置是正確的,誤差是否正確,需要其他方式驗證(暫時沒有思路)
可以看到上面在求loss的時候為:loss = sum(x2),但是如果換成:loss = mean(x),效果就沒有上面明顯。
實驗二的效果

loss = mean(x)
可以看到根本無法看到誤差梯度的位置信息
實驗三:loss = sum(x)


小結(jié): 可以看到位置信息有差別,比如國徽部分,這會讓人以為,國徽部分只利用了左部分的信息,或者自己手寫的操作誤差索引不對。
可以通過兩種方式進行驗證
1.用更多,更復(fù)雜的運算求loss,比如pow,等
2.用matplotlib顯示圖片后,用鼠標(biāo)可以指示每個點的具體的值,可以檢測有誤差梯度區(qū)域是否和無誤差梯度區(qū)域有差別。
以上這篇pytorch對梯度進行可視化進行梯度檢查教程就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU
這篇文章主要介紹了tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
python實現(xiàn)用類讀取文件數(shù)據(jù)并計算矩形面積
今天小編就為大家分享一篇python實現(xiàn)用類讀取文件數(shù)據(jù)并計算矩形面積,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
opencv python在視屏上截圖功能的實現(xiàn)
OpenCV是一個基于BSD許可(開源)發(fā)行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。這篇文章主要介紹了opencv python在視屏上截圖,需要的朋友可以參考下2020-03-03
Python MySQLdb 執(zhí)行sql語句時的參數(shù)傳遞方式
這篇文章主要介紹了Python MySQLdb 執(zhí)行sql語句時的參數(shù)傳遞方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
python使用MySQLdb訪問mysql數(shù)據(jù)庫的方法
這篇文章主要介紹了python使用MySQLdb訪問mysql數(shù)據(jù)庫的方法,實例分析了Python使用MySQLdb模塊操作mysql數(shù)據(jù)庫的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08

