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中的对象拷贝示例 python引用传递
Jan 23 Python
python字典排序实例详解
May 20 Python
python字典基本操作实例分析
Jul 11 Python
Pycharm学习教程(1) 定制外观
May 02 Python
Python操作MySQL数据库的三种方法总结
Jan 30 Python
使用anaconda的pip安装第三方python包的操作步骤
Jun 11 Python
对python使用telnet实现弱密码登录的方法详解
Jan 26 Python
python requests使用socks5的例子
Jul 25 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
Apr 20 Python
python函数超时自动退出的实操方法
Dec 28 Python
Python+OpenCV实现图片中的圆形检测
Apr 07 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的类树(支持无限分类)
2006/10/09 PHP
PHP4实际应用经验篇(2)
2006/10/09 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
php笔记之:php数组相关函数的使用
2013/04/26 PHP
PHP自动识别字符集并完成转码详解
2013/08/02 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
2014/11/07 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
修改发贴的编辑功能
2007/03/07 Javascript
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
jQuery操作checkbox选择(list/table)
2013/04/07 Javascript
jQuery图片特效插件Revealing实现拉伸放大
2015/04/22 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
浅谈对Angular中的生命周期钩子的理解
2017/07/31 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
json跨域调用python的方法详解
2017/01/11 Python
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
python实现爬取图书封面
2018/07/05 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
Python读取指定日期邮件的实例
2019/02/01 Python
python中的&&及||的实现示例
2019/08/07 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
Python+OpenCV实现图像的全景拼接
2020/03/05 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
外贸业务员岗位职责
2013/11/24 职场文书
2014升学宴答谢词
2014/01/26 职场文书
手机被没收检讨书
2014/02/22 职场文书
基层党员四风问题自我剖析材料
2014/09/29 职场文书
2019入党申请书范文3篇
2019/08/21 职场文书
JavaScript流程控制(分支)
2021/12/06 Javascript