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网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
Apr 25 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
python实现机器学习之元线性回归
Sep 06 Python
浅谈python函数调用返回两个或多个变量的方法
Jan 23 Python
Python操作配置文件ini的三种方法讲解
Feb 22 Python
用python建立两个Y轴的XY曲线图方法
Jul 08 Python
django最快程序开发流程详解
Jul 19 Python
pytorch 自定义数据集加载方法
Aug 18 Python
Django中自定义查询对象的具体使用
Oct 13 Python
python3反转字符串的3种方法(小结)
Nov 07 Python
Python通过yagmail实现发送邮件代码解析
Oct 27 Python
5个pandas调用函数的方法让数据处理更加灵活自如
Apr 24 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实现在站点里面添加邮件发送的功能
2020/04/28 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
PHP中的self关键字详解
2019/06/23 PHP
javascript 动态生成私有变量访问器
2009/12/06 Javascript
javascript 显示当前系统时间代码
2009/12/28 Javascript
JavaScript 选中文字并响应获取的实现代码
2011/08/28 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
解决vue无法设置滚动位置的问题
2018/10/07 Javascript
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
原生JavaScript实现换肤
2021/02/19 Javascript
详解详解Python中writelines()方法的使用
2015/05/25 Python
Python探索之修改Python搜索路径
2017/10/25 Python
对python中执行DOS命令的3种方法总结
2018/05/12 Python
用pandas中的DataFrame时选取行或列的方法
2018/07/11 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
Python列表切片常用操作实例解析
2019/12/16 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
html如何对span设置宽度
2019/10/30 HTML / CSS
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
屈臣氏菲律宾官网:Watsons菲律宾
2020/06/30 全球购物
中文专业毕业生自荐书范文
2014/01/04 职场文书
《商鞅南门立木》教学反思
2014/02/16 职场文书
金融学专科生自我鉴定
2014/02/21 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
服务标兵事迹材料
2014/05/04 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
优质护理服务心得体会
2016/01/22 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
python 中的jieba分词库
2021/11/23 Python