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标准库内置函数complex介绍
Nov 25 Python
python3序列化与反序列化用法实例
May 26 Python
Django中的Signal代码详解
Feb 05 Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 Python
Python爬虫——爬取豆瓣电影Top250代码实例
Apr 17 Python
Python callable内置函数原理解析
Mar 05 Python
使用pth文件添加Python环境变量方式
May 26 Python
pycharm sciview的图片另存为操作
Jun 01 Python
python和php哪个容易学
Jun 19 Python
Python实现异步IO的示例
Nov 05 Python
Sublime Text3最新激活注册码分享适用2020最新版 亲测可用
Nov 12 Python
浅析Python中的套接字编程
Jun 22 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
中国收音机工业发展史
2021/03/02 无线电
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
2010/11/01 PHP
那些年一起学习的PHP(一)
2012/03/21 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
php实现搜索类封装示例
2016/03/31 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
2016/11/05 PHP
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
jQuery 1.2.x 升? 1.3.x 注意事项
2009/05/06 Javascript
JS弹出层的显示与隐藏示例代码
2013/12/27 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
2016/11/10 Javascript
js设置文字颜色的方法示例
2016/12/30 Javascript
基于vuejs实现一个todolist项目
2017/04/11 Javascript
ES6 javascript中Class类继承用法实例详解
2017/10/30 Javascript
9种改善AngularJS性能的方法
2017/11/28 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
2018/04/24 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
Node.js API详解之 timer模块用法实例分析
2020/05/07 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
使用wxpython实现的一个简单图片浏览器实例
2014/07/10 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
美国隐形眼镜销售网站:ContactsDirect
2017/10/28 全球购物
售后专员岗位职责
2013/12/08 职场文书
办公设备采购方案
2014/03/16 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
关于车尾的标语大全
2015/08/11 职场文书
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL
详解flex:1什么意思
2022/07/23 HTML / CSS