pytorch对梯度进行可视化进行梯度检查教程


Posted in Python onFebruary 04, 2020

目的: 在训练神经网络的时候,有时候需要自己写操作,比如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的时候采用更加复杂,或者更多的运算(这样在梯度可视化的时候效果才更加明显)

可视化效果

原始图片

pytorch对梯度进行可视化进行梯度检查教程

梯度可视化图片

pytorch对梯度进行可视化进行梯度检查教程

原图+梯度图

pytorch对梯度进行可视化进行梯度检查教程

小结:

可以看到误差梯度的位置是正确的,误差是否正确,需要其他方式验证(暂时没有思路)

可以看到上面在求loss的时候为:loss = sum(x2),但是如果换成:loss = mean(x),效果就没有上面明显。

实验二的效果

pytorch对梯度进行可视化进行梯度检查教程

loss = mean(x)

可以看到根本无法看到误差梯度的位置信息

实验三:loss = sum(x)

pytorch对梯度进行可视化进行梯度检查教程

pytorch对梯度进行可视化进行梯度检查教程

小结: 可以看到位置信息有差别,比如国徽部分,这会让人以为,国徽部分只利用了左部分的信息,或者自己手写的操作误差索引不对。

可以通过两种方式进行验证

1.用更多,更复杂的运算求loss,比如pow,等

2.用matplotlib显示图片后,用鼠标可以指示每个点的具体的值,可以检测有误差梯度区域是否和无误差梯度区域有差别。

以上这篇pytorch对梯度进行可视化进行梯度检查教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用正则搜索字符串或文件中的浮点数代码实例
Jul 11 Python
深入解析Python中的lambda表达式的用法
Aug 28 Python
python简单读取大文件的方法
Jul 01 Python
python导出hive数据表的schema实例代码
Jan 22 Python
python 实现图片旋转 上下左右 180度旋转的示例
Jan 24 Python
Python对ElasticSearch获取数据及操作
Apr 24 Python
获取Pytorch中间某一层权重或者特征的例子
Aug 17 Python
python中wx模块的具体使用方法
May 15 Python
python中判断文件结束符的具体方法
Aug 04 Python
python输出国际象棋棋盘的实例分享
Nov 26 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
Dec 31 Python
Python与C/C++的相互调用案例
Mar 04 Python
pytorch梯度剪裁方式
Feb 04 #Python
基于梯度爆炸的解决方法:clip gradient
Feb 04 #Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
Feb 04 #Python
python求一个字符串的所有排列的实现方法
Feb 04 #Python
Windows上安装tensorflow  详细教程(图文详解)
Feb 04 #Python
有关Tensorflow梯度下降常用的优化方法分享
Feb 04 #Python
python dumps和loads区别详解
Feb 04 #Python
You might like
php&java(二)
2006/10/09 PHP
PHP时间戳使用实例代码
2008/06/07 PHP
PHP Directory 函数的详解
2013/03/07 PHP
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
JS实现的4种数字千位符格式化方法分享
2015/03/02 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
javascript回调函数详解
2018/02/06 Javascript
Javascript Promise用法详解
2018/05/10 Javascript
vue中使用heatmapjs的示例代码(结合百度地图)
2018/09/05 Javascript
在Vue中实现随hash改变响应菜单高亮
2020/03/09 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
easy_install python包安装管理工具介绍
2013/02/10 Python
Python实现控制台输入密码的方法
2015/05/29 Python
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
在pandas中一次性删除dataframe的多个列方法
2018/04/10 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
在pytorch中为Module和Tensor指定GPU的例子
2019/08/19 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
体育老师的教学自我评价分享
2013/11/19 职场文书
工地资料员岗位职责
2013/12/31 职场文书
体育教师求职信
2014/05/24 职场文书
高中升旗仪式演讲稿
2014/09/09 职场文书
委托书格式范文
2015/01/28 职场文书
质检员岗位职责范本
2015/04/07 职场文书
2015年学校综合治理工作总结
2015/07/20 职场文书
老乡会致辞
2015/07/28 职场文书
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记