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使用webbrowser浏览指定url的方法
Apr 04 Python
python执行get提交的方法
Apr 29 Python
Python中的random()方法的使用介绍
May 15 Python
python3实现基于用户的协同过滤
May 31 Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 Python
PIL对上传到Django的图片进行处理并保存的实例
Aug 07 Python
tensorflow 实现从checkpoint中获取graph信息
Feb 10 Python
keras model.fit 解决validation_spilt=num 的问题
Jun 19 Python
什么是python的自省
Jun 21 Python
Python sqlalchemy时间戳及密码管理实现代码详解
Aug 01 Python
如何基于pandas读取csv后合并两个股票
Sep 25 Python
详细介绍python类及类的用法
May 31 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
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
让checkbox不选中即将选中的checkbox不选中
2014/07/11 Javascript
网站接入QQ登录的两种方法
2014/07/22 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
2015/03/31 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
jquery ztree实现模糊搜索功能
2016/02/25 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
jQuery EasyUI Tab 选项卡问题小结
2016/08/16 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
vue.js 上传图片实例代码
2017/06/22 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
2017/09/29 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
angularjs $http调用接口的方式详解
2018/08/13 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
vue.js中使用echarts实现数据动态刷新功能
2019/04/16 Javascript
JavaScript arguments.callee作用及替换方案详解
2020/09/02 Javascript
python求素数示例分享
2014/02/16 Python
跟老齐学Python之Python文档
2014/10/10 Python
使用graphics.py实现2048小游戏
2015/03/10 Python
Python中使用支持向量机(SVM)算法
2017/12/26 Python
python re模块匹配贪婪和非贪婪模式详解
2020/02/11 Python
Python3标准库之dbm UNIX键-值数据库问题
2020/03/24 Python
Python常用数字处理基本操作汇总
2020/09/10 Python
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
体育教育专业毕业生自荐信
2013/11/15 职场文书
助人为乐表扬信范文
2014/01/14 职场文书
工作失职检讨书范文
2014/01/16 职场文书
媒矿安全生产承诺书
2014/05/23 职场文书
结婚老公保证书
2015/02/26 职场文书
入队仪式主持词
2015/07/04 职场文书