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实现web端用户登录和注册功能的教程
Apr 30 Python
Python中的日期时间处理详解
Nov 17 Python
Python中 Lambda表达式全面解析
Nov 28 Python
python多进程中的内存复制(实例讲解)
Jan 05 Python
简单实现python画圆功能
Jan 25 Python
python 实现在txt指定行追加文本的方法
Apr 29 Python
Python切片操作深入详解
Jul 27 Python
解决pyinstaller打包pyqt5的问题
Jan 08 Python
pygame实现成语填空游戏
Oct 29 Python
在tensorflow中设置保存checkpoint的最大数量实例
Jan 21 Python
Python GUI库PyQt5图形和特效样式QSS介绍
Feb 25 Python
python 5个顶级异步框架推荐
Sep 09 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
fleaphp crud操作之find函数的使用方法
2011/04/23 PHP
php 随机排序广告的实现代码
2011/05/09 PHP
PHP防CC攻击实现代码
2011/12/29 PHP
PHP中使用cURL实现Get和Post请求的方法
2013/03/13 PHP
使用prototype.js进行异步操作
2007/02/07 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
jquery+ajax请求且带返回值的代码
2015/08/12 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
JavaScript数组方法总结分析
2016/05/06 Javascript
BootStrap中Table分页插件使用详解
2016/10/09 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
jQuery实现html可联动的百分比进度条
2020/03/26 jQuery
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
[01:28:44]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第一场 1月10日
2021/03/11 DOTA
python解析xml模块封装代码
2014/02/07 Python
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
python实现图片变亮或者变暗的方法
2015/06/01 Python
python实现批量修改文件名代码
2017/09/10 Python
使用python爬取B站千万级数据
2018/06/08 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
对python中的高效迭代器函数详解
2018/10/18 Python
python实现登录密码重置简易操作代码
2019/08/14 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
如何在mac下配置python虚拟环境
2020/07/06 Python
Python之字典对象的几种创建方法
2020/09/30 Python
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
实习教师自我鉴定
2013/12/09 职场文书
精神文明单位申报材料
2014/05/02 职场文书
2019年聘任书的写作格式及范文!
2019/07/03 职场文书
mysql数据库实现设置字段长度
2022/06/10 MySQL
Redis实现分布式锁的五种方法详解
2022/06/14 Redis