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 threading多线程编程实例
Sep 18 Python
python实现去除下载电影和电视剧文件名中的多余字符的方法
Sep 23 Python
利用标准库fractions模块让Python支持分数类型的方法详解
Aug 11 Python
python:pandas合并csv文件的方法(图书数据集成)
Apr 12 Python
对python中的logger模块全面讲解
Apr 28 Python
解决Tensorflow安装成功,但在导入时报错的问题
Jun 13 Python
python实现转圈打印矩阵
Mar 02 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
Jun 19 Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 Python
Django数据库迁移常见使用方法
Nov 12 Python
python工具——Mimesis的简单使用教程
Jan 16 Python
Python预测分词的实现
Jun 18 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利用COM对象访问SQLServer、Access
2006/10/09 PHP
PHP Pear 安装及使用
2009/03/19 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
很棒的学习jQuery的12个网站推荐
2011/04/28 Javascript
jquery 选项卡效果 新手代码
2011/07/08 Javascript
js前台判断开始时间是否小于结束时间
2012/02/23 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
2013/08/02 Javascript
jquery中的查找parents与closest方法之间的区别
2013/12/02 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
jQuery图片拖动组件Dropzone用法示例
2017/01/17 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
2017/07/18 jQuery
vue loadmore组件上拉加载更多功能示例代码
2017/07/19 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
vue translate peoject实现在线翻译功能【新手必看】
2018/06/07 Javascript
element ui table 增加筛选的方法示例
2018/11/02 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
JS实现吸顶特效
2020/01/08 Javascript
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
python 七种邮件内容发送方法实例
2014/04/22 Python
Python生成不重复随机值的方法
2015/05/11 Python
利用python画一颗心的方法示例
2017/01/31 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
python实现全排列代码(回溯、深度优先搜索)
2020/02/26 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
副处级干部考察材料
2014/05/17 职场文书
民族学专业职业生涯规划范文:积跬步以至千里
2014/09/11 职场文书
青岛海底世界导游词
2015/02/11 职场文书
邮政营业员岗位职责
2015/04/14 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书