pytorch对梯度进行可视化进行梯度检查教程

 更新时间:2020年02月04日 15:04:57   作者:陈军2号  
今天小编就为大家分享一篇pytorch对梯度进行可视化进行梯度检查教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

目的: 在训练神经网络的时候,有时候需要自己写操作,比如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的时候采用更加复杂,或者更多的运算(这样在梯度可视化的时候效果才更加明显)

可视化效果

原始图片

梯度可视化图片

原图+梯度图

小结:

可以看到误差梯度的位置是正确的,误差是否正确,需要其他方式验证(暂时没有思路)

可以看到上面在求loss的时候为:loss = sum(x2),但是如果换成:loss = mean(x),效果就没有上面明显。

实验二的效果

loss = mean(x)

可以看到根本无法看到误差梯度的位置信息

实验三:loss = sum(x)

小结: 可以看到位置信息有差别,比如国徽部分,这会让人以为,国徽部分只利用了左部分的信息,或者自己手写的操作误差索引不对。

可以通过两种方式进行验证

1.用更多,更复杂的运算求loss,比如pow,等

2.用matplotlib显示图片后,用鼠标可以指示每个点的具体的值,可以检测有误差梯度区域是否和无误差梯度区域有差别。

以上这篇pytorch对梯度进行可视化进行梯度检查教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • numpy之sum()的使用及说明

    numpy之sum()的使用及说明

    这篇文章主要介绍了numpy之sum()的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T

    tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU

    这篇文章主要介绍了tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • python实现用类读取文件数据并计算矩形面积

    python实现用类读取文件数据并计算矩形面积

    今天小编就为大家分享一篇python实现用类读取文件数据并计算矩形面积,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • opencv python在视屏上截图功能的实现

    opencv python在视屏上截图功能的实现

    OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。这篇文章主要介绍了opencv python在视屏上截图,需要的朋友可以参考下
    2020-03-03
  • Python MySQLdb 执行sql语句时的参数传递方式

    Python MySQLdb 执行sql语句时的参数传递方式

    这篇文章主要介绍了Python MySQLdb 执行sql语句时的参数传递方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • 使用Python从零开始撸一个区块链

    使用Python从零开始撸一个区块链

    对数字货币的崛起感到新奇的我们,并且想知道其背后的技术——区块链是怎样实现的。这篇文章主要介绍了使用Python从零开始撸一个区块链,需要的朋友可以参考下
    2018-03-03
  • Python 私有属性与私有方法

    Python 私有属性与私有方法

    这篇文章主要介绍了Python 私有属性与私有方法,私有属性是指在 Python 的面向对象开发过程中,对象的某些属性只想在对象的内部被使用,但不想在外部被访问到这些属,下面我们就进入文章一起了解更多信息内容吧
    2022-03-03
  • 用python实现超强的加密软件

    用python实现超强的加密软件

    大家好,本篇文章主要讲的是用python实现超强的加密软件,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • python使用MySQLdb访问mysql数据库的方法

    python使用MySQLdb访问mysql数据库的方法

    这篇文章主要介绍了python使用MySQLdb访问mysql数据库的方法,实例分析了Python使用MySQLdb模块操作mysql数据库的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • Django显示可视化图表的实践

    Django显示可视化图表的实践

    这篇文章主要介绍了Django显示可视化图表的实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05

最新评论