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实现发送email的几种常用方法
Aug 18 Python
CentOS6.5设置Django开发环境
Oct 13 Python
python实现的AES双向对称加密解密与用法分析
May 02 Python
基于python实现在excel中读取与生成随机数写入excel中
Jan 04 Python
python覆盖写入,追加写入的实例
Jun 26 Python
Python实现快速排序的方法详解
Oct 25 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
Mar 30 Python
Python PyQt5整理介绍
Apr 01 Python
keras 解决加载lstm+crf模型出错的问题
Jun 10 Python
浅谈对python中if、elif、else的误解
Aug 20 Python
十个Python自动化常用操作,即拿即用
May 10 Python
Python中22个万用公式的小结
Jul 21 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基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
PHP封装的mysqli数据库操作类示例
2019/02/16 PHP
基于JQuery的日期联动实现代码
2011/02/24 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
jquery与prototype框架的详细对比
2013/11/21 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
jquery中JSON的解析方式
2015/03/16 Javascript
快速掌握Node.js环境的安装与运行方法
2016/02/16 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
2016/07/24 Javascript
NODE.JS跨域问题的完美解决方案
2016/10/20 Javascript
JS中Map和ForEach的区别
2018/02/05 Javascript
JS在if中的强制类型转换方式
2018/07/15 Javascript
vue实现axios图片上传功能
2019/08/20 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
Python使用PIL模块生成随机验证码
2017/11/21 Python
python中cPickle类使用方法详解
2018/08/27 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
纯用NumPy实现神经网络的示例代码
2018/10/24 Python
numpy 计算两个数组重复程度的方法
2018/11/07 Python
python多线程抽象编程模型详解
2019/03/20 Python
python set集合使用方法解析
2019/11/05 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
2020/12/11 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
铭宣海淘转运:美国、日本、英国转运等全球转运公司
2019/09/10 全球购物
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
环境工程毕业生自荐信
2013/11/17 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL
Oracle 死锁的检测查询及处理
2021/09/25 Oracle