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 相关文章推荐
windows下python模拟鼠标点击和键盘输示例
Feb 28 Python
Python字符串中查找子串小技巧
Apr 10 Python
Python中random模块用法实例分析
May 19 Python
Python实现给qq邮箱发送邮件的方法
May 28 Python
使用Python来开发Markdown脚本扩展的实例分享
Mar 04 Python
Python语言实现获取主机名根据端口杀死进程
Mar 31 Python
Python两个内置函数 locals 和globals(学习笔记)
Aug 28 Python
python 调用win32pai 操作cmd的方法
May 28 Python
python清除字符串中间空格的实例讲解
May 11 Python
浅述python中深浅拷贝原理
Sep 18 Python
pycharm配置pyqt5-tools开发环境的方法步骤
Feb 11 Python
对Keras中predict()方法和predict_classes()方法的区别说明
Jun 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
PHP 读取文件的正确方法
2009/04/29 PHP
PHP 加密解密内部算法
2010/04/22 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
php短网址和数字之间相互转换的方法
2015/03/13 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
2016/03/21 PHP
Laravel5.1 框架路由基础详解
2020/01/04 PHP
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
从阶乘函数对比Javascript和C#的异同
2012/05/31 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
javascript转换静态图片,增加粒子动画效果
2015/05/28 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
vue.js+Echarts开发图表放大缩小功能实例
2017/06/09 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
JS简单表单验证功能完整示例
2020/01/26 Javascript
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python文件去除注释的方法
2015/05/25 Python
剖析Django中模版标签的解析与参数传递
2015/07/21 Python
python目录与文件名操作例子
2016/08/28 Python
Python编程实现使用线性回归预测数据
2017/12/07 Python
python Kmeans算法原理深入解析
2019/08/23 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
几款好用的python工具库(小结)
2020/10/20 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
日本卡普空电视游戏软件公司官方购物网站:e-CAPCOM
2018/07/17 全球购物
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
医院护士专业个人的求职信
2013/12/09 职场文书
化学教师自荐信范文
2013/12/28 职场文书
小学生新学期寄语
2014/01/19 职场文书
1亿有多大教学反思
2014/05/01 职场文书
预备党员半年考察意见
2015/06/01 职场文书
毕业典礼致辞
2015/07/29 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书