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的三目运算符和not in运算符使用示例
Mar 03 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
Sep 15 Python
python解决Fedora解压zip时中文乱码的方法
Sep 18 Python
python模块之sys模块和序列化模块(实例讲解)
Sep 13 Python
python 将数据保存为excel的xls格式(实例讲解)
May 03 Python
如何优雅地处理Django中的favicon.ico图标详解
Jul 05 Python
Python sklearn KFold 生成交叉验证数据集的方法
Dec 11 Python
python实现的多任务版udp聊天器功能案例
Nov 13 Python
python科学计算之numpy——ufunc函数用法
Nov 25 Python
python 密码学示例——凯撒密码的实现
Sep 21 Python
python爬虫中PhantomJS加载页面的实例方法
Nov 12 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
Terran兵种介绍
2020/03/14 星际争霸
关于BIG5-HKSCS的解决方法
2007/03/20 PHP
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
php 图片上传类代码
2009/07/17 PHP
php地址引用(php地址引用的效率问题)
2012/03/23 PHP
php格式化电话号码的方法
2015/04/24 PHP
php二维码生成
2015/10/19 PHP
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
2007/08/13 Javascript
Js 随机数产生6位数字
2010/05/13 Javascript
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
jQuery实现的两种简单弹窗效果示例
2018/04/18 jQuery
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
Python实现的tab文件操作类分享
2014/11/20 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
python实现祝福弹窗效果
2019/04/07 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
一行python实现树形结构的方法
2019/08/09 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
python将logging模块封装成单独模块并实现动态切换Level方式
2020/05/12 Python
凯特方迪化妆品官网:Kat Von D Beauty
2016/11/15 全球购物
2014年教研活动总结范文
2014/04/26 职场文书
机关搬迁方案
2014/05/18 职场文书
公司合作意向书范文
2014/07/30 职场文书
竞聘报告优秀范文
2014/11/06 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
2015年党风建设工作总结
2015/04/29 职场文书
2015年语言文字工作总结
2015/07/23 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
导游词之黄果树瀑布
2019/09/20 职场文书
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis
MySQL数据库⾼可⽤HA实现小结
2022/01/22 MySQL