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每天必学之bytes字节
Jan 28 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
Jul 12 Python
使用python实现接口的方法
Jul 07 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
Nov 15 Python
关于python2 csv写入空白行的问题
Jun 22 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
Jul 07 Python
详解Python安装tesserocr遇到的各种问题及解决办法
Mar 07 Python
Python 循环终止语句的三种方法小结
Jun 24 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
Oct 30 Python
Pycharm激活方法及详细教程(详细且实用)
May 12 Python
Python Matplotlib绘图基础知识代码解析
Aug 31 Python
Python函数调用追踪实现代码
Nov 27 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脚本数据库功能详解(上)
2006/10/09 PHP
浅析php中如何在有限的内存中读取大文件
2013/07/02 PHP
php判断输入是否是纯数字,英文,汉字的方法
2015/03/05 PHP
Open and Print a Word Document
2007/06/15 Javascript
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
jQuery 处理网页内容的实现代码
2010/02/15 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
new Date()问题在ie8下面的处理方法
2014/07/31 Javascript
jquery实现select下拉框美化特效代码分享
2015/08/18 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
详解nodejs微信公众号开发——2.自动回复
2017/04/10 NodeJs
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
微信小程序模版渲染详解
2018/01/26 Javascript
Vue多系统切换实现方案
2018/06/05 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
2018/08/08 jQuery
JQuery扩展对象方法操作示例
2018/08/21 jQuery
vue input标签通用指令校验的实现
2019/11/05 Javascript
详解React 条件渲染
2020/07/08 Javascript
VUE动态生成word的实现
2020/07/26 Javascript
python实现一次创建多级目录的方法
2015/05/15 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
8种用Python实现线性回归的方法对比详解
2019/07/10 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
python实现马丁策略的实例详解
2021/01/15 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
Trip.com香港网站:Ctrip携程旗下,全球最大的网上旅游社之一
2016/08/01 全球购物
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
门诊挂号室室长岗位职责
2013/11/27 职场文书
技术总监个人的自我评价范文
2013/12/18 职场文书
大学考试作弊检讨书
2014/01/30 职场文书
建筑结构施工专业推荐信
2014/02/21 职场文书
老人节标语大全
2014/10/08 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js
Vue实现动态查询规则生成组件
2021/05/27 Vue.js