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 相关文章推荐
easy_install python包安装管理工具介绍
Feb 10 Python
python标准日志模块logging的使用方法
Nov 01 Python
python分析apache访问日志脚本分享
Feb 26 Python
Python切换pip安装源的方法详解
Nov 18 Python
Python实现将一个正整数分解质因数的方法分析
Dec 14 Python
pycharm下查看python的变量类型和变量内容的方法
Jun 26 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
Python使用MyQR制作专属动态彩色二维码功能
Jun 04 Python
Python FtpLib模块应用操作详解
Dec 12 Python
python多进程重复加载的解决方式
Dec 13 Python
python爬虫用scrapy获取影片的实例分析
Nov 23 Python
撤回我也能看到!教你用Python制作微信防撤回脚本
Jun 11 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
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
QueryPath PHP 中的jQuery
2010/04/11 PHP
php后门URL的防范
2013/11/12 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
2015/10/08 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
2016/07/15 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
2016/02/19 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
浅析Jquery操作select
2016/12/13 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
TypeScript中的方法重载详解
2019/04/12 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
Python实现基于HTTP文件传输实例
2014/11/08 Python
对于Python装饰器使用的一些建议
2015/06/03 Python
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
python生成n个元素的全组合方法
2018/11/13 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
selenium学习教程之定位以及切换frame(iframe)
2021/01/04 Python
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
HTML5离线应用与客户端存储的实现
2018/05/03 HTML / CSS
linux下进程间通信的方式
2013/01/23 面试题
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
2016七夕情人节广告语
2016/01/28 职场文书
原来实习报告是这样写的呀!
2019/07/03 职场文书
详解Redis复制原理
2021/06/04 Redis
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏